home *** CD-ROM | disk | FTP | other *** search
/ PC-Blue - MS DOS Public Domain Library / PC-Blue MS-DOS Public Domain Library - NYACC.iso / vol110 / rbbspc.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1986-12-15  |  49.4 KB  |  953 lines

  1. 3  ' $linesize: 132
  2. 100  CLEAR:CLS:DEFINT A-Z:DIM LG$(18):GOSUB 64000:WIDTH 80:SCREEN 0,0,0:KEY OFF:XA$=CHR$(19):XON$=CHR$(17):DEF FNTI!=CSNG(FIX((VAL(MID$(TIME$,1,2))*60*60)+(VAL(MID$(TIME$,4,2))*60)+(VAL(MID$(TIME$,7,2))*1)))
  3. 105  DEF FNCD$(A1$)=CHR$(VAL(MID$(A1$,7,2)))+CHR$(VAL(MID$(A1$,1,2)))+CHR$(VAL(MID$(A1$,4,2))):DEF FNUD$(A1$)=RIGHT$(STR$(ASC(MID$(A1$,2))),2)+"/"+RIGHT$(STR$(ASC(MID$(A1$,3))),2)+"/"+RIGHT$(STR$(ASC(A1$)),2)
  4. 110  DEF FNDC$(A1$)=RIGHT$(A1$,2)+LEFT$(A1$,2)+MID$(A1$,4,2):DEF FNSS$(A1$)=LEFT$(A1$+SPACE$(2),INSTR(A1$+SPACE$(2),SPACE$(2))-1):TOA!=FRE("A"):LS$="UM UU UB UD":TI$=TIME$:ON ERROR GOTO 13000:DEF SEG:CE=(PEEK(&H2E)+256*PEEK(&H2F))-110
  5. 115  CR$=CHR$(13):LF$=CHR$(10):ABT$=CHR$(11):VA$="CPC12.3B (compilable)":CA$="RBBS-PC.DEF":DIM SA(8),MD(20),UA(12),FS(8),ME$(6),HE$(8),M(250,2),A$(30),B$(128):IF CE THEN GOSUB 59000 ELSE NODE = 2:NODE$ = "1"
  6. 117  OPEN "I",2,CA$:INPUT #2,FA$,PB$,PC$,NA$,NB$,CB,AA,AB,TV!,ME,DF,UB$,XPR,BC,BA,PRT,DF,ME$(1),ME$(2),ME$(3),ME$(4),ME$(5),CQ$,DF,OA,UE,PL,DF,WA,DF$:INPUT#2,MES1$,LG$(11),CF$,CG$,UF1$,WB$,LG$(12),DIR$,CP$,OB,SD,DF$,DA,FGR,BG,BDR,RC$,CH$,LG$(13),LG$(14)
  7. 118  INPUT#2,HE$(1),HE$(2),HE$(3),HE$(4),HE$(5),HE$(6),HE$(7),HE$(8),LG$(8),LG$(7),DF$,RD,BD,UDR,DF,SHRD,CYC,DF,TOA!,LG$(18):INPUT#2,MO,DB,SE,FB$,SF,KA$,VB,SA(1),SA(2),SA(3),SA(4),SA(5),SA(6),SA(7),SA(8),PD$,MP,DF,UPS,MTERM,DAY
  8. 119  INPUT#2,MD(1),MD(2),MD(3),MD(4),MD(5),MD(6),MD(7),MD(8),MD(9),MD(10),MD(11),MD(12),MD(13),MD(14),MD(15),MD(16),MD(17),MD(18),MD(19),MD(20)
  9. 121  INPUT#2,FS(1),FS(2),FS(3),FS(4),FS(5),FS(6),FS(7),FS(8),UA(1),UA(2),UA(3),UA(4),UA(5),UA(6),UA(7),UA(8),UA(9),UA(10),UA(11),UA(12),CPQ:MES$=MES1$:UF$=UF1$:IF CE THEN MID$(VA$,10)="--(compiled)":ELSE SHRD=0
  10. 123  PRINT VB$;VA$;" Node ";NODE$:PRINT"Free memory: ";FRE("A"):PRINT:PRINT"Press:":FOR I=1 TO 11:INPUT#2,A$:PRINT A$:NEXT:A$="":FOR I=1 TO 10:KEY I,"":NEXT
  11. 124  IF NOT CPQ THEN DEF SEG=0:MC=PEEK(&H1FE)+256*PEEK(&H1FF):IF MC>0 THEN DEF SEG=MC:DF=(&H64+PEEK(&H58)+256*PEEK(&H59)+&HC):IF PEEK(DF)=&H1 OR &H2 THEN POKE(DF),&H9
  12. 125  IF MC THEN AX=&HB00:BX=0:GOSUB 60510:AX=&H701:BX=0:GOSUB 60510:BX=-4:AX=&H1:IF CP$="COM2" THEN BX=-3:GOSUB 60510 ELSE GOSUB 60510
  13. 126  IF SHRD=2 THEN CRET$=SPACE$(535):CALL INITIO(A)
  14. 127  BK$=CHR$(8)+CHR$(32)+CHR$(8):BK1$=CHR$(29)+CHR$(32)+CHR$(29):MQ=72:TY!=3*60:TAA=120:IF CP$="COM2"THEN LSB=&H2F8:MSB=&H2F9:LCR=&H2FB:MCR=&H2FC:LSR=&H2FD:MSR=&H2FE ELSE LSB=&H3F8:MSB=&H3F9:LCR=&H3FB:MCR=&H3FC:LSR=&H3FD:MSR=&H3FE
  15. 130  SOH$=CHR$(1):EOT$=CHR$(4):ACK$=CHR$(6):NAK$=CHR$(21):CAN$=CHR$(24):ESC$=CHR$(27):LG$(17)=CHR$(0)+CHR$(112):NE=&H100:GOSUB 135:GOTO 175
  16. 134  GRF=-1:A$="Welcome to Conference "+GRN$:GOSUB 1405
  17. 135  CLOSE 2:LC=0:GOSUB 21990:IF LOF(1)=0 THEN DF$=MES$:CLOSE 1:KILL MES$:GOSUB 25000:GOTO 13600 ELSE GOSUB 23000:R=FMR
  18. 150  DF=0:GET 1,R:IF MID$(R$,116,1)=CHR$(226)THEN DF=-1
  19. 155  RR=VAL(MID$(R$,118)):IF DF THEN 165 ELSE IF RR<1 THEN RR=1:IF R=>NMR THEN FC=M(1,2):GOSUB 30000:GOSUB 25000:RETURN
  20. 160  LC=LC+1:M(LC,1)=R:M(LC,2)=VAL(MID$(R$,2,4))
  21. 165  R=R+RR:GOTO 150
  22. 175  GOSUB 30500:GET 1,NODE:AVA=VAL(MID$(R$,32,2)):AC=VAL(MID$(R$,34,2)):SG=VAL(MID$(R$,36,2)):LH=VAL(MID$(R$,38,2)):MID$(R$,57,1)="I":PUT 1,NODE:GOSUB 56000:CDX=LOF(2)/64
  23. 180  GET 2,CDX:IF LEFT$(CL$,13) = STRING$(13,CHR$(0)) THEN CDX=CDX-1:GOTO 180
  24. 187  IF LH THEN GOSUB 41500:LPRINT:LPRINT VB$;VA$;" Node ";NODE$;" up at "TIM$+" on "+DATE$:GOSUB 50500
  25. 200  OPEN CP$+":300,N,8,1,RS,CD,DS" AS #3:IF INP(MSR) > 127 THEN GOSUB 44000:GOTO 440
  26. 201  A$="ATZ":GOSUB 52070:GOSUB 50510:IF SD THEN MB$="M1" ELSE MB$="M0
  27. 220  IF CB >0 THEN A$="ATS2=255Q1S0=255S10=20"+MB$ ELSE A$="ATS2=255Q1S10=20"+MB$
  28. 221  GOSUB 52070:GOSUB 41500:PRINT:PRINT"RBBS-PC ready for calls at "TIM$+" on "+DATE$:PRINT:PRINT"<< Screen clears to prevent display burn-in. >>":PRINT:IF NOT PRT THEN LOCATE,,0
  29. 235  TCA!=FNTI!:GOSUB 49000
  30. 239  RB!=0:IF CB>0 THEN RB!=FNTI!:COLOR 7,0,0 ELSE COLOR FGR,BG,BDR
  31. 240  IF SG THEN 253 ELSE X=1:WHILE(INP(MSR)AND &H40)=0:X$=INKEY$:FK$=X$:GOSUB 60000
  32. 250  IF X$=CHR$(27) THEN 253 ELSE 256
  33. 253  TI!=FNTI!:GOSUB 14500:LJ=-1:IF KA$<>"NONE" THEN LOCATE 24,1:INPUT "Enter PASSWORD";Z$:GOSUB 5000:IF Z$ <> KA$ THEN 13549
  34. 255  LOCATE 24,1:PRINT "Sysop in.":BE=-1:GR=-1:CI$="LOCAL":UG=SE:GOTO 827
  35. 256  IF X$=LG$(17) THEN GOTO 31000
  36. 260  IF RB!>0 THEN IF FNTI!-RB!>45 THEN RB!=0:RBC=0:IF(PRT AND CB)THEN PRINT"Ringback timeout
  37. 265  MMM!=FNTI!-TCA!:IF MMM!>TAA THEN LOCATE,,0:CLS:TCA!=FNTI!
  38. 270  WEND:IF CB=0 THEN 320
  39. 275  WHILE(INP(MSR)AND &H40):IF PRT THEN SOUND 3000,1:SOUND 4000,2:SOUND 32767,6
  40. 277  WEND:IF LOC(3)THEN X$=INPUT$(LOC(3),3)
  41. 280  A$="ATS1?":GOSUB 52070
  42. 290  INPUT#3,X$:IF LEN(X$)=0 THEN 290 ELSE IF RBC=0 THEN RBC=2 ELSE IF VAL(X$)<RBC THEN RBC=RBC+1
  43. 300  IF PRT THEN PRINT "Ring ";X$
  44. 310  IF (RBC-2)<CB THEN 239
  45. 320  A$="ATQ1E1A":GOSUB 52070:A$="":Q=&H180:QQ=&H60:IF PRT THEN LOCATE,,1
  46. 325  TCC!=FNTI!
  47. 330  IF INP(MSR)>127 THEN 333
  48. 331  IF FNTI!-TCC!>30 THEN 10595 ELSE GOTO 330
  49. 333  GOSUB 21280:GOSUB 50500:OUT LCR,&H3:BE=-1:TCC!=FNTI!
  50. 335  GOSUB 42010:IF FNTI!-TCC!>30 THEN 10595 ELSE IF EOF(3)THEN 335
  51. 340  A=ASC(INPUT$(LOC(3),3)):IF A=13 THEN 350 ELSE IF A=141 THEN OUT LCR,&H1A:BE=0:GOTO 350
  52. 345  SWAP Q,QQ:GOSUB 1654:OUT LCR,&H3:BE=-1:IF FNTI!-TCC!>30 THEN 10595 ELSE 335
  53. 350  I=0:GOSUB 41500:IF Q=&H60 THEN BPS=-3 ELSE BPS=-1
  54. 355  TI!=FNTI!:IF TI!>CTI!THEN GOSUB 42000:GOSUB 21280
  55. 360  UC=0:PRINT#3,LF$:PRINT#3,"CAN YOUR TERMINAL DISPLAY LOWER CASE";:GOSUB 1500:Z$=B$(1):GOSUB 5000:PRINT#3,"":IF BE THEN PE$="N,8,1" ELSE PE$="E,7,1
  56. 365  IF BPS=-3 THEN BF$="1200 BAUD, " ELSE BF$="300 BAUD, 
  57. 366  A$=VB$+VA$:GOSUB 1405:A$=LF$+"OPERATING AT "+BF$+PE$:GOSUB 1400:IF NO THEN UC=-1 ELSE IF NOT YES THEN 360
  58. 369  F$=WB$:GR=0:IF BE THEN A$="Do you want graphics":GOSUB 1500:IF YES THEN GR=-1:GOSUB 43030
  59. 370  TV!=TV!*60:STI=OA:CR=0:GOSUB 6000:STI=0:GOSUB 1400:TDA=0:TV!=TV!/60
  60. 400  A1$="What is your ":GOSUB 12500:IF TEX THEN I=1:GOTO 10620
  61. 410  GOSUB 21990:FOR X=2 TO MNODES+1:GET 1,X:IF INSTR(R$,NAM$) THEN IF MID$(R$,57,1)="A" THEN I=6:GOTO 10620
  62. 420  NEXT:GET 1,NODE:IF NAM$=LEFT$(R$,LEN(NAM$))THEN LL=-1:A$="Welcome back, "+FE$+".":GOSUB 1405
  63. 440  GOSUB 25000:IF FE$=PB$AND LK$=PC$THEN CI$="REMOTE":GOTO 827
  64. 445  IF INSTR(NAM$,"SYSOP") OR INSTR(NAM$,NA$+" "+NB$) THEN I=1:GOTO 10620
  65. 455  FOR J=1 TO LEN(NAM$):X=ASC(MID$(NAM$,J,1)):IF(X<65 OR X>90)AND(X<>32 AND X<>39 AND X<>45 AND X<>46)THEN 400
  66. 465  NEXT:TEA$=NAM$:GOSUB 12600:IF NOT FG THEN 700 ELSE GOSUB 27000:GOSUB 25000:GOSUB 9500:UIX#=LOC(2):IF UG<MO THEN I=3:GOTO 10620 ELSE GOSUB 26500:CI$=CS$:I=0:MR=4:KEE$=PW$:MES=0:IF Q=3 THEN Z$=B$(3):TDA=1:GOSUB 677 ELSE GOSUB 675
  67. 630  IF PF THEN I=4:GOTO 10620
  68. 643  IF UG>=SE THEN GOSUB 1405:A$="You have SYSOP privileges":GOSUB 1400 ELSE GOSUB 41070
  69. 645  NF=0:LM$=FNDC$(FNUD$(LND$)):IF MID$(LM$,3,1)=" " THEN MID$(LM$,3,1)="0
  70. 655  IF MID$(LM$,5,1)=" " THEN MID$(LM$,5,1)="0
  71. 660  GOTO 800
  72. 665  IF KEE$=PW$ THEN PF=0:RETURN
  73. 667  TDA=0
  74. 670  TDA=TDA+1:IF TDA>MR THEN PF=-1:RETURN
  75. 675  A$=P$+" (dots will echo)":GOSUB 45010:Z$=B$(1)
  76. 677  GOSUB 5000:Z$=Z$+SPACE$(15-LEN(Z$)):IF KEE$=Z$ THEN PF=0:RETURN
  77. 680  IF MES THEN A$="Sorry, wrong password":GOSUB 1405:GOTO 670 ELSE 670
  78. 700  Z$=FE$:GOSUB 12570:IF FG THEN GOSUB 27000:GOSUB 25000:GOTO 12595 ELSE Z$=LK$:GOSUB 12570:IF FG THEN GOSUB 27000:GOSUB 25000:GOTO 12595
  79. 710  IF NUR>HUR THEN A$="Sorry no room for new users at this time!":GOSUB 1405:A$="Please try again in the future.":GOSUB 1405:UIX#=0:GOTO 13540
  80. 720  GOSUB 25000:NF=-1:GOSUB 9400:GOSUB 12630:LSET N$="NEWUSER":PUT 2,UIX#:UG=DB:IF UG < MO THEN I=3:GOTO 10620
  81. 730  A1$=" are you calling from":GOSUB 12950:A$=NAM$+" from "+Z$:GOSUB 1405:LSET CS$=Z$:CI$=Z$+SPACE$(2):A$="Is this correct":GOSUB 1500:GOSUB 1405:IF NOT YES THEN LSET N$=STRING$(31,0):PUT 2,UIX#:GOSUB 27500:GOTO 400
  82. 755  GOSUB 12800:A$="Type PASSWORD again for double check":GOSUB 45010:SWAP Z$,B$(1):GOSUB 5000:IF B$(1)<>Z$THEN A$=P$+"s don't match!":GOSUB 1405:GOTO 755
  83. 760  GOSUB 5000:LSET PW$=Z$:GOSUB 1405:A$=FE$+", your password is needed to logon again.":GOSUB 1400:TFA=UG:GOSUB 12900
  84. 800  MUIX#=UIX#:HUG=UG:GOSUB 1405:A$="Logging "+NAM$+" to disk.":GOSUB 1405:TGA=CVI(MID$(OP$,1,2))+1:GOSUB 9500:IF D$<>LEFT$(TD$,8) THEN ET=0 ELSE ET=CVI(ET$)
  85. 805  DLD=CVI(UDL$):ULD=CVI(UUL$):IF LO>LE THEN LO=0
  86. 815  LSET OP$=MKI$(TGA)+MID$(OP$,3):LSET TD$=D$+" "+TI$:PUT 2,UIX#:GOSUB 27500:IF NOT NF THEN A$="You have signed on"+STR$(TGA)+" times.":GOSUB 1400
  87. 816  IF NF THEN TV!=TV!*60:F$=LG$(12):STI=0:GOSUB 1790:STI=-1:GOSUB 1700:TV!=TV!/60
  88. 817  NF=0:IF UE THEN A$="You have downloaded"+STR$(DLD)+" files & uploaded"+STR$(ULD)+" files":GOSUB 1400
  89. 825  JJ=INSTR(CI$,SPACE$(2)):CI$=LEFT$(CI$,(JJ-1)):GOTO 830
  90. 827  FE$=NA$:LK$=NB$:NAM$="SYSOP":UG=SE:SH=-1:PRT=-1:MQ=72:GOSUB 41500:IF LJ THEN SG=0:GOSUB 33100
  91. 830  IF UG<>DB THEN Z$="":Z=0:GOSUB 5140:IF FG THEN TV!=TJA
  92. 835  IF LJ THEN 842:IF BE THEN PE$="N,8,1" ELSE PE$="E,7,1
  93. 837  Z$=NAM$+" on at "+D$+", "+TIM$+" from "+CI$+", "+BF$+PE$:NG$=Z$+SPACE$(128-LEN(Z$))
  94. 841  IF LH THEN LPRINT SPACE$(2)+Z$
  95. 842  TV!=(TV!+DAY*ET)*60:GOSUB 21990:GOSUB 23000:IF NOT SH THEN CJ=CJ+1
  96. 844  GOSUB 24000:GET 1,NODE:MID$(R$,1,31)=NAM$+SPACE$(31-LEN(NAM$)):MID$(R$,57,1)="A":PUT 1,NODE:GOSUB 25000:GOSUB 30000:IF SH THEN 900 ELSE IF UG>=SE THEN SH=-1 
  97. 848  IF LL THEN 948
  98. 850  GOSUB 950:IF BC<1 THEN A$="Sorry, "+FE$+" no bulletins today":GOSUB 1405:GOTO 900
  99. 855  IF OB THEN A$=FE$+", there are "+STR$(BC)+" bulletins today.  Skip them":GOSUB 1500:IF YES THEN 900
  100. 860  GOSUB 9705
  101. 900  A$="":GOSUB 1405:A$="Checking message file.":IF NOT LJ THEN GOSUB 1400
  102. 910  T=0:GOSUB 30500:FOR R=1 TO LC:GET 1,M(R,1):IF INSTR(MID$(R$,37,31),NAM$)=0 THEN IF NOT SH THEN 929
  103. 922  IF NOT SH THEN IF T THEN 927 ELSE 925
  104. 923  IF INSTR(MID$(R$,37,31),NAM$)=0 AND INSTR(MID$(R$,37,31),NA$+" "+NB$)=0 THEN 929 ELSE IF T THEN 927
  105. 925  A$="The following message(s) may be for you.":GOSUB 1405:A$=K1$:GOSUB 1400:T=-1
  106. 927  A$=LEFT$(R$,5):GOSUB 1403
  107. 929  NEXT:IF NOT T THEN A$="Sorry, "+FE$+", no mail for you today.":GOSUB 1405
  108. 930  IF NOT RD THEN A$="":GOTO 948
  109. 931  T=0:FOR R=1 TO LC:GET 1,M(R,1):IF INSTR(MID$(R$,6,31),NAM$)=0 THEN IF NOT SH THEN 940
  110. 932  IF NOT SH THEN IF T THEN 938 ELSE 935
  111. 934  IF INSTR(MID$(R$,6,31),NAM$)=0 AND INSTR(MID$(R$,6,31),NA$+" "+NB$)=0 THEN 940 ELSE IF T THEN 938
  112. 935  GOSUB 1405:A$="You have left these message(s).":GOSUB 1405:A$=K1$:GOSUB 1400:T=-1
  113. 938  A$=LEFT$(R$,5):GOSUB 1403
  114. 940  NEXT:IF T THEN GOSUB 1405:A$="Thanks, "+FE$+", for deleting any messages.":GOSUB 1405
  115. 948  GOSUB 1400:A$="Entering Message Subsystem.":GOSUB 1405:GOSUB 950:GOTO 955
  116. 950  IF NOT PRT THEN RETURN
  117. 953  C.C=CSRLIN:C.L=POS(0):JJ=LEN(NAM$)+LEN(CI$)+LEN(FH$)+14
  118. 954  LOCATE 25,1:PRINT FH$+SPACE$(79-JJ)+NAM$+" "+CI$+" "+LS$;:LOCATE C.C,C.L:RETURN
  119. 955  GOSUB 4900:STI=-1
  120. 1200  CLOSE 1:AM$="M":GOSUB 49000:STI=-1:Q=0:GOSUB 1405:IF UG<SF THEN A1$=">":GOTO 1240 ELSE A1$=",1,...,8>":IF XPR THEN 1240
  121. 1220  F$=ME$(1):GOSUB 43025
  122. 1240  GOSUB 41050:NH=0:IF NOT XPR THEN F$=ME$(2):GOSUB 43025
  123. 1250  GOSUB 49000:GOSUB 1405:A$="Main Function <B,C,D,E,F,G,H,I,J,K,L,O,P,Q,R,S,U,V,X,?"+A1$:GOSUB 1500:IF Q=0 THEN 1250
  124. 1270  FOR J=1 TO Q:Z$ = B$(J):GOSUB 5000:FF = VAL(Z$):IF FF=0 THEN 1280 ELSE IF FF<1 OR FF>8 THEN GOSUB 1350:GOTO 1200
  125. 1274  IF UG < SA(FF) THEN VD$="Sysop "+Z$:GOSUB 1380:GOTO 1200
  126. 1276  ON FF GOSUB 10070,10090,10390,10530,11000,33070,10930,9800:GOTO 1200
  127. 1280  FF=INSTR("BCDEFGHIJKLOPQRSUVX?",Z$): IF FF=0 THEN GOSUB 1350:GOTO 1200
  128. 1290  IF UG<MD(FF) THEN VD$="MainMenu "+Z$:GOSUB 1380:GOTO 1200
  129. 1320  ON FF GOSUB 9700,1800,10970,2000,20000,10560,1740,1760,5300,3900,5200,4700,1395,4320,4330,4340,1330,1630,4240,1700:NEXT:GOTO 1200
  130. 1330  AM$="U":GOSUB 41050:IF NOT XPR THEN F$=ME$(4):GOSUB 43025
  131. 1334  GOSUB 49000:GOSUB 1405:A$="Utility Function <B,G,H,L,M,N,P,Q,S,T,U,!>":GOSUB 1500:IF Q=0 THEN GOSUB 1350:GOTO 1334
  132. 1336  Z$=B$(J):GOSUB 5000:FF=INSTR("BGHLMNPQSTU!",Z$):IF FF=0 THEN GOSUB 1360:GOTO 1330 ELSE IF UG<UA(FF) THEN VD$="Util "+Z$:GOSUB 1380:GOTO 1330
  133. 1338  ON FF GOSUB 5500,43000,1780,4100,10925,9300,5110,1200,4900,9100,10090,4200:GOTO 1330
  134. 1350  IF XPR THEN RETURN ELSE GOSUB 1405
  135. 1360  A$=FE$+", "+B$(J)+" is invalid.":GOTO 2210
  136. 1380  A$="Sorry, "+FE$+", authorization needed from sysop.":GOSUB 1405:Z$=SPACE$(5)+"SV!-"+VD$:GOSUB 5538:NI=NI+1:IF VB=0 OR NI<=VB THEN RETURN
  137. 1385  IF CINT(UIX#)<1 THEN RETURN ELSE A$="SECURITY VIOLATION!  Call sysop for reinstatement":GOSUB 1405:I=5:IF CINT(UIX#)<1 THEN 10620 ELSE GOSUB 26500:GOSUB 9400:GET 2,UIX#:LSET SL$=MKI$(MO):PUT 2,UIX#:GOTO 10620
  138. 1395  GOSUB 135:RETURN 900
  139. 1400  CR=1
  140. 1403  CR=CR+1
  141. 1405  RET=0:IF NOT STI OR CM THEN 1435
  142. 1410  Y$=INKEY$:FK$=Y$:GOSUB 60000:IF LJ THEN 1430
  143. 1415  IF EOF(3)THEN GOSUB 42000:GOTO 1430
  144. 1420  Y$=INPUT$(1,3)
  145. 1425  IF Y$=CHR$(19) THEN WHILE EOF(3):GOSUB 42000:WEND:GOTO 1420
  146. 1430  IF Y$=ABT$AND STI THEN 1475<UNK! {0009}>
  147. 1435  IF PRT THEN LOCATE,,1:PRINT A$;
  148. 1437  IF LJ THEN 1450
  149. 1440  IF UC THEN SWAP A$,Z$:GOSUB 5000:SWAP A$,Z$
  150. 1445  PRINT#3,A$;
  151. 1450  IF CR=1 THEN 1470
  152. 1455  IF PRT THEN PRINT
  153. 1460  IF NOT LJ THEN PRINT#3,"":IF LF THEN PRINT#3,LF$;
  154. 1465  IF CR=2 THEN CR=0:GOTO 1455
  155. 1470  Y$="":A$=Y$:CR=0:RETURN
  156. 1475  CR=2:A$="":RET=STI:STI=0:GOSUB 1410:STI=RET:RET=-1:NH=0:GOTO 1470
  157. 1500  GOSUB 42000:TOA!=FRE("A"):THA!=FNTI!:A=0:B=0:C=0:Q=1:EOL=0:YES=0:B$="":NO=0:A$=A$+"? ":GOSUB 1403:IF LJ THEN LINE INPUT"",B$:GOTO 1575 ELSE IF BA THEN PRINT#3,CHR$(7);
  158. 1525  WHILE EOF(3):GOSUB 42000:MMM!=FNTI!-THA!:IF MMM!>TY!THEN 10595
  159. 1530  Y$=INKEY$:FK$=Y$:GOSUB 60000:IF Y$<>"" THEN 1545 ELSE WEND:GOSUB 42010
  160. 1540  Y$=INPUT$(1,3):IF Y$=CHR$(127)THEN 1635
  161. 1545  IF Y$=CHR$(8) OR Y$=CHR$(7) OR Y$=CHR$(26) OR Y$=CHR$(227) THEN 1635
  162. 1550  IF Y$<" " AND Y$<>CR$THEN 1525
  163. 1553  IF Y$="^" THEN 1525
  164. 1555  IF PRT THEN PRINT Y$;
  165. 1557  IF NOT SI THEN PRINT#3,Y$; ELSE PRINT#3,".";
  166. 1560  IF Y$=CR$THEN 1570
  167. 1563  IF LEN(B$)=>254 THEN A$="Input too long!":GOSUB 1405:GOTO 1500
  168. 1565  B$=B$+Y$:GOTO 1525
  169. 1570  IF LF THEN PRINT#3,LF$;
  170. 1575  A=INSTR(B$,";"):IF A=0 THEN 1620
  171. 1580  B$(1)=LEFT$(B$,A-1):A=A+1
  172. 1585  B=INSTR(A,B$,";"):C=B-A:IF C<1 THEN EOL=-1:C=128
  173. 1595  DF$=MID$(B$,A,C):IF DF$<>"" THEN Q=Q+1:B$(Q)=DF$
  174. 1605  IF NOT EOL AND Q<10 THEN A=B+1:GOTO 1585
  175. 1610  IF LEN(B$)>64 THEN A$="Try again, "+FE$+".":GOSUB 1405:GOTO 1500 ELSE 1625
  176. 1620  B$(1)=B$:Q=1:IF B$="" THEN Q=0:RETURN
  177. 1625  SWAP Z$,B$:GOSUB 5000:SWAP Z$,B$:IF LEFT$(B$,1)="Y" THEN YES=-1 ELSE IF LEFT$(B$,1)="N" THEN NO=-1
  178. 1628  IF B$(Q)="NS" OR B$(Q)="ns" THEN NO=0:NH=-1:B$(Q)="":IF Q>1 THEN Q=Q-1
  179. 1629  IF B$="RE" THEN RE=-1 ELSE IF B$="K" THEN KB=-1
  180. 1630  RETURN
  181. 1635  IF LEN(B$)=0 THEN 1525
  182. 1640  B$=LEFT$(B$,LEN(B$)-1):IF PRT THEN PRINT BK1$;
  183. 1650  PRINT#3,BK$;:GOTO 1525
  184. 1654  R1=INP(LCR):DF=INP(MSB):OUT MSB,0:OUT LCR,R1 OR 128:IF Q=384 THEN OUT LSB,&H80:OUT MSB,&H1:GOTO 1684
  185. 1662  IF Q=256 THEN OUT LSB,&H0:OUT MSB,&H1:GOTO 1684
  186. 1664  IF Q=96 THEN OUT LSB,&H60:OUT MSB,&H0
  187. 1684  OUT LCR,R1:OUT MSB,DF:RETURN
  188. 1700  F$=HE$(2):GOTO 1790
  189. 1740  F$=HE$(1):GOTO 1790
  190. 1760  F$=WB$:GOTO 1790
  191. 1780  F$=HE$(8)
  192. 1790  GOSUB 43030:GOSUB 6000:RETURN
  193. 1800  GOSUB 1405:A$="Comments are readable by Sysop only, Do you wish to leave a comment":GOSUB 1500:MQ=72:IF NOT YES THEN GOTO 2210
  194. 1840  T$="SYSOP":SUB$="COMMENT":SC=-1:GOTO 2007
  195. 1850  CLOSE 2:BX=&H3:EN$=CG$:GOSUB 29000:OPEN "A",2,CG$:GOSUB 1405:A$="Thanks for the comments, "+FE$+" !":GOSUB 1405:GOSUB 41510:PRINT#2,NAM$,D$,TIM$:FOR X=1 TO LI:PRINT#2,A$(X):NEXT:PRINT#2,CR$:CLOSE 2:BX=&H3:EN$=CG$:GOSUB 29500:RETURN
  196. 2000  GOSUB 1405:IF LC=ME THEN A$="Too many active messages -- try tomorrow.":GOSUB 1405:GOTO 3650
  197. 2006  PAS$="":SC=0:IF NOT RE THEN T$=""
  198. 2007  IF SC THEN Z$=CG$:FT$="comment" ELSE Z$=MES$:FT$="message
  199. 2008  IF SC THEN GOSUB 52000:GOTO 2009 ELSE AD$="2000":IF NMR+5=>HMR THEN AD$="1"
  200. 2009  IF VAL(AD$)<2000 THEN A$="Not enough room for "+FT$+"!":GOSUB 1405:GOTO 3650
  201. 2010  LI=0:L=0:X=0:FOR I=1 TO 30:A$(I)="":NEXT:IF SC THEN 2100
  202. 2020  IF RE THEN 2050 ELSE A$="To (C/R  For All)":GOSUB 1500:IF LEN(B$(1))>30 THEN A$="30 Char. Max.":GOSUB 1405:GOTO 2020
  203. 2030  IF Q=0 THEN T$="ALL" ELSE Z$=B$(1):GOSUB 5000:T$=Z$
  204. 2035  A$="Subject":GOSUB 1500:IF LEN(B$(1))>25 THEN A$="25 Char. Max.":GOSUB 1405:GOTO 2035
  205. 2045  IF Q=0 THEN 20095 ELSE Z$=B$(1):GOSUB 5000:SUB$=Z$
  206. 2050  A$="Security <K,P,R,N,H,?>":IF XPR THEN 2060
  207. 2055  A$="Security < K)ill, P)assword, R)eceiver, N)one, H)elp >
  208. 2060  GOSUB 1500:IF Q=0 THEN 2050 ELSE Z$=LEFT$(B$(1),1):GOSUB 5000:ON INSTR("RKNPH?",Z$) GOTO 2075,2090,2100,2088,2070,2055:GOTO 2050
  209. 2070  F$=HE$(3):GOSUB 1790:GOTO 2050
  210. 2075  IF T$="ALL" THEN A$="Cannot Protect this Message":GOSUB 1405:GOTO 2050
  211. 2084  PAS$=TU$:GOTO 2100
  212. 2085  A$=P$:GOSUB 1500:IF Q=0 THEN 2085 ELSE IF LEN(B$(1))>L THEN A$=STR$(L)+" Chars. max.":GOSUB 1405:GOTO 2085 ELSE IF L=15 AND MID$(B$(1),1,1)="!" THEN A$=P$+" can't begin with '!'":GOSUB 1405:GOTO 2085 ELSE RETURN
  213. 2088  A$="Callers must KNOW PASSWORD TO READ message.  Is this what you want":GOSUB 1500: IF NO THEN 2070 ELSE L=14:A1$="!":GOTO 2092
  214. 2090  L=15:A1$="
  215. 2092  GOSUB 2085:Z$=B$(1):GOSUB 5000:PAS$=A1$+Z$
  216. 2100  GOSUB 1405:IF NOT XPR THEN A$="To enter "+FT$+", type in text.":GOSUB 1405:A$="<C/R> to end (19 lines max.).":GOSUB 1405
  217. 2120  GOSUB 3200
  218. 2125  LI=LI+1:A$=RIGHT$(STR$(LI),2)+": "+A$(LI):GOSUB 1403:GOSUB 3700:IF A$(LI)="" THEN LI=LI-1:GOTO 2300
  219. 2140  J=LI:GOSUB 2200:IF X THEN 2300 ELSE 2125
  220. 2200  X=0:IF J<17 OR SH THEN RETURN ELSE IF J=17 THEN A$="Two lines left." ELSE IF J=18 THEN A$="Last line" ELSE A$="Message full.":X=-1
  221. 2210  GOSUB 1405:RETURN
  222. 2220  GOSUB 1405:GOTO 20095
  223. 2300  GOSUB 1405:IF NOT XPR THEN GOSUB 50400
  224. 2315  GOSUB 1405:A$="Subfunction <A,C,D,E,I,L,M,S,?>":GOSUB 1500:IF Q=0 THEN 2315 ELSE Z$=B$(1):GOSUB 5000
  225. 2325  IF Q>1 AND Z$<>"M"THEN L=VAL(B$(Q)):GOSUB 3320
  226. 2330  ON INSTR("ACDEILMS?",Z$) GOTO 2400,2340,2500,2600,2800,3000,3100,3400,2345:GOTO 2300
  227. 2340  GOSUB 3200:GOTO 2140
  228. 2345  F$=HE$(4):GOSUB 1790:GOTO 2315
  229. 2400  GOSUB 1405:A$="Abort "+FT$:GOSUB 1500:IF NOT YES THEN 2300
  230. 2430  GOSUB 1405:A$="Aborted":GOSUB 1405:GOTO 3650
  231. 2500  GOSUB 1405:IF Q=1 THEN A$="Delete ":GOSUB 1403:GOSUB 3300
  232. 2520  A$="Line #"+STR$(L):GOSUB 1405:A$=A$(L):GOSUB 1400:A$="Delete this line":GOSUB 1500:IF NOT YES THEN A$="Line #"+STR$(L)+" NOT Deleted.":GOSUB 1405:GOTO 2300
  233. 2550  LI=LI-1:FOR X=L TO LI:A$(X)=A$(X+1):NEXT:A$(LI+1)="":A$="Line #"+STR$(L)+" Deleted.":GOSUB 1405:GOTO 2300
  234. 2600  GOSUB 1405:IF Q=1 THEN GOSUB 3300
  235. 2620  A$="Line #"+STR$(L)+" is:":GOSUB 1405:A$=A$(L):GOSUB 1400:A$="Enter <Oldstring;Newstring> or C/R for no change.":GOSUB 1405:B$(2)="":GOSUB 1500:IF Q=0 THEN 2300
  236. 2660  X=INSTR(1,A$(L),B$(1)):IF X=0 THEN 2710
  237. 2670  LB1=LEN(B$(1)):LB2=LEN(B$(2)):IF LB1=LB2 THEN MID$(A$(L),X)=B$(2):GOTO 2620
  238. 2690  BF$=MID$(A$(L),X+LB1):DF$=LEFT$(A$(L),X-1):A$(L)=DF$+B$(2)+BF$:GOTO 2620
  239. 2710  A$="String <"+B$(1)+"> not found in line"+STR$(L)+".":GOSUB 1405:GOTO 2300
  240. 2800  IF LI=>19 AND NOT SH THEN A$="Message full.":GOSUB 1405:GOTO 2920
  241. 2820  GOSUB 1405:IF Q=1 THEN A$="Before ":GOSUB 1403:GOSUB 3300
  242. 2830  W=LI:K=LI-L:FOR X=L TO LI:B$(X+1-L)=A$(X):A$(X)="":NEXT:LI=L
  243. 2840  A$=RIGHT$(STR$(LI),2)+": ":GOSUB 1403:GOSUB 3700:IF A$(LI)="" THEN 2920
  244. 2870  LI=LI+1:J=LI+K-1:GOSUB 2200:IF X THEN 2920 ELSE 2840
  245. 2920  FOR X=1 TO K+1:A$(LI+X-1)=B$(X):NEXT:LI=W+LI-L:GOTO 2300
  246. 3000  STI=-1:GOSUB 1405:IF Q=1 THEN L=1:A$="To: "+T$+" Re: "+SUB$:GOSUB 1405:GOSUB 3200
  247. 3020  FOR X=L TO LI:IF RET THEN 2300 ELSE A$=RIGHT$(STR$(X),2)+": "+A$(X)
  248. 3030  GOSUB 1405:NEXT:GOTO 2300
  249. 3100  GOSUB 1405:IF Q<>1 THEN B$(1)=B$(Q):GOTO 3130
  250. 3115  A$="Right-Margin is"+STR$(MQ):GOSUB 1405:A$="Set to (8,16,24,32,40,48,56,64,72)":GOSUB 1500
  251. 3130  X=VAL(B$(1)):IF X>0 AND X<81 AND X MOD 8=0 THEN 3150
  252. 3140  A$="Invalid - Margin remains "+STR$(MQ)+".":GOSUB 1405:IF MS THEN RETURN ELSE 2300
  253. 3150  MQ=VAL(B$(1)):A$="Margin now"+STR$(MQ)+".":GOSUB 1405:IF MS THEN RETURN ELSE 2300
  254. 3200  GOSUB 1405:A$="    ["+STRING$(MQ-2,45)+"]":GOTO 2210
  255. 3300  A$="Line #":GOSUB 1500:L=VAL(B$(1))
  256. 3320  IF L=>1 AND L=<LI THEN RETURN
  257. 3330  IF Q=0 THEN RETURN 2300
  258. 3340  A$="No such line, "+FE$+".":GOSUB 1405:RETURN 2300
  259. 3400  IF SC THEN 1850
  260. 3405  GOSUB 21990:GOSUB 23000:DF$=R$:A$="Message will be # "+STR$(LE+1):GOSUB 1405:A$="Updating Message file.":GOSUB 1403:REC=0:N$="":LE=LE+1:LC=LC+1:MT$=STR$(LE)+SPACE$(5-LEN(STR$(LE))):IF PAS$=TU$ THEN MID$(MT$,1,1)="*
  261. 3460  FI$=NAM$+SPACE$(31-LEN(NAM$)):T$=T$+SPACE$(31-LEN(T$)):MID$(T$,23,8)=TIME$:SUB$=SUB$+SPACE$(25-LEN(SUB$)):PAS$=PAS$+SPACE$(15-LEN(PAS$)):FOR J=1 TO LI:A$(J)=A$(J)+CHR$(227):REC=REC+LEN(A$(J)):NEXT
  262. 3510  IF REC MOD 128=0 THEN N$=STR$(REC\128+1) ELSE N$=STR$(REC\128+2)
  263. 3530  GET 1,NMR:M(LC,1)=NMR:M(LC,2)=LE:LSET R$=MT$+FI$+T$+D$+SUB$+PAS$+CHR$(225)+N$:PUT 1,NMR:NMR=NMR+VAL(N$):N$="":FOR J=1 TO LI:A$=".":GOSUB 1403:N$=N$+A$(J):IF LEN(N$)>127 THEN LSET R$=N$:PUT 1:N$=MID$(N$,129)
  264. 3630  NEXT:IF LEN(N$)>0 THEN LSET R$=N$:PUT 1
  265. 3640  GOSUB 1405:LSET R$=DF$:GOSUB 24000:GOSUB 30000:GOSUB 25000
  266. 3650  IF RE THEN GOSUB 30500:RETURN ELSE 20095
  267. 3700  RS$=A$(LI):COL=LEN(RS$):STI=0
  268. 3720  COL=COL+1
  269. 3730  IF LJ THEN X$=INPUT$(1):GOTO 3740
  270. 3732  THA!=FNTI!:WHILE EOF(3):MMM!=FNTI!-THA!:IF MMM!>TY!THEN 10595
  271. 3733  GOSUB 42000:X$=INKEY$:FK$=X$:GOSUB 60000:IF LEN(X$)=1 THEN 3740
  272. 3736  WEND:X$=INPUT$(1,3):IF X$=LF$THEN 3730
  273. 3738  IF X$=CHR$(127)THEN 3870
  274. 3740  IF X$=CHR$(8) OR X$=CHR$(7) OR X$=CHR$(26) OR X$=CHR$(227) THEN 3870
  275. 3750  A$=X$:GOSUB 1403:IF X$=CR$THEN 3850
  276. 3770  IF COL>MQ-3 AND X$=" " THEN GOSUB 1405:GOTO 3850
  277. 3780  RS$=RS$+X$:IF COL<MQ+1 THEN 3720
  278. 3800  Z=LEN(RS$):FOR I=1 TO LEN(RS$):IF MID$(RS$,Z,1)=" " THEN 3820
  279. 3810  Z=Z-1:NEXT:Z=LEN(RS$)-1
  280. 3820  COL=MQ+1-Z:IF PRT THEN PRINT STRING$(COL,29);STRING$(COL,0);
  281. 3830  IF NOT LJ THEN PRINT#3,STRING$(COL,8);STRING$(COL,32);
  282. 3840  A$(LI)=LEFT$(RS$,Z):A$(LI+1)=RIGHT$(RS$,COL):GOTO 2210
  283. 3850  IF NOT LJ AND LF THEN PRINT#3,LF$;
  284. 3860  A$(LI)=RS$:RETURN
  285. 3870  IF COL=1 THEN 3730 ELSE COL=COL-2:RS$=LEFT$(RS$,LEN(RS$)-1)
  286. 3880  IF PRT THEN PRINT BK1$;
  287. 3885  IF NOT LJ THEN PRINT#3,BK$;
  288. 3890  GOTO 3720
  289. 3900  KB=0:GOSUB 1405:IF Q<>1 THEN MM=VAL(B$(Q)):GOTO 3950
  290. 3930  A$="Msg # to Kill":GOSUB 1500:MM=VAL(B$(Q)):GOSUB 1405
  291. 3950  FOR QX=1 TO LC:IF M(QX,2)=MM AND MM>=1 THEN 3970
  292. 3955  NEXT:GOSUB 3965:GOTO 4040
  293. 3965  A$="There is no message # "+STR$(MM)+".":GOTO 2210
  294. 3970  GOSUB 21990:GET 1,M(QX,1):R=VAL(MID$(R$,118)):IF SH THEN 4030
  295. 3980  Z=15:Z$=MID$(R$,101,15):GOSUB 8100:IF LEN(Z$)=0 THEN 4030
  296. 3990  IF Z$=TU$ THEN IF INSTR(R$,NAM$) THEN 4030 ELSE MES=-1:MR=0:GOSUB 680:GOSUB 25000:GOTO 4040
  297. 4000  IF LEFT$(Z$,1)="!" THEN Z$=MID$(Z$,2)
  298. 4010  KEE$=Z$+SPACE$(15-LEN(Z$)):MR=1:MES=-1:GOSUB 667:IF PF THEN GOSUB 25000:GOTO 4040
  299. 4030  LSET R$=LEFT$(R$,115)+CHR$(226)+MID$(R$,117):PUT 1,LOC(1):A$="Msg # "+STR$(MM)+" Killed.":GOSUB 1405:GOSUB 25000
  300. 4040  IF KB THEN RETURN ELSE 20095
  301. 4100  GOSUB 1405:LF=NOT LF:A$="Line Feeds ":IF LF THEN A$=A$+"On":GOTO 4300 ELSE A$=A$+"Off":GOTO 4300
  302. 4200  GOSUB 1405:BA=NOT BA:A$="Prompting Bell ":IF BA THEN A$=A$+"On":GOTO 4300 ELSE A$=A$+"Off":GOTO 4300
  303. 4240  GOSUB 1405:XPR=NOT XPR:IF XPR THEN A$="Expert Mode" ELSE A$="Novice Mode
  304. 4300  GOSUB 1405:GOSUB 50500:RETURN
  305. 4320  QU=-1:RT=0:SU=0:GOTO 4350
  306. 4330  QU=0:RT=-1:SU=0:GOTO 4350
  307. 4340  QU=0:RT=0:SU=-1<UNK! {0009}>
  308. 4350  GOSUB 30500:QAH=-RT-QU-SU*5:IF Q>2 AND VAL(B$(Q))=0 THEN Z$=B$(Q):Q=Q-1 ELSE Z$=""
  309. 4360  GOSUB 5000:LG$(15)=Z$:L=1:LI=Q:MU=0
  310. 4370  L=L+1:IF L<=LI THEN MM=VAL(B$(L)):GOTO 4415
  311. 4380  NH=0:MU=0:A$="Msg # ("+STR$(FC)+" to"+STR$(M(LC,2))+", *, <H>elp)":IF XPR THEN 4400
  312. 4390  IF RT THEN A$=A$+" to Retrieve (C/R to end)" ELSE A$="Starting at "+A$
  313. 4400  GOSUB 1500:IF Q=0 THEN 20095 ELSE IF INSTR("Hh",LEFT$(B$(1),1))THEN F$=HE$(7):GOSUB 1790:RETURN ELSE L=0:LI=Q:GOTO 4370
  314. 4415  FOW=0:REV=0:IF B$(L)="*"THEN MM=LO+1:FOW=-1:GOTO 4430
  315. 4416  IF INSTR("Mm",B$(L)) THEN MU=-1:GOTO 4370 ELSE IF MM=0 THEN 20095 ELSE GOSUB 1405
  316. 4430  IF RIGHT$(B$(L),1)="+"THEN FOW=-1 ELSE IF RIGHT$(B$(L),1)="-"THEN REV=-1:GOTO 4490
  317. 4450  FOR R=1 TO LC:IF RT AND M(R,2)=MM THEN 4520
  318. 4470  IF((RT AND FOW)OR QU OR SU)AND M(R,2)=>MM THEN 4520
  319. 4480  NEXT:GOTO 4515
  320. 4490  FOR R=LC TO 1 STEP-1:IF M(R,2)<=MM THEN 4540
  321. 4510  NEXT
  322. 4515  GOSUB 3965:GOTO 4370
  323. 4520  QQQ=R:IF RT AND NOT FOW THEN 4560
  324. 4530  QQ=R:QQQ=LC:QA=1:GOTO 4550
  325. 4540  QQ=R:QQQ=1:QA=-1
  326. 4550  FOR R=QQ TO QQQ STEP QA
  327. 4560  GET 1,M(R,1):PF=0:UH=0:Z$=MID$(R$,101,15):IF INSTR(R$,NAM$)>0 THEN UH=-1
  328. 4561  IF NOT SH THEN IF INSTR(R$,TU$)>0 AND NOT UH THEN PF=-1:IF FOW OR REV THEN 4635
  329. 4562  MM=VAL(MID$(R$,2,4)):IF MU AND NOT UH THEN 4625
  330. 4580  IF INSTR(R$,LG$(15))=0 THEN 4635
  331. 4581  IF MID$(R$,116,1)=CHR$(226) THEN 4625
  332. 4582  PG=0:IF MID$(Z$,1,1)="!" THEN IF NOT SH THEN PG=-1:KEE$=MID$(Z$,2)+" ":MR=0:GOSUB 665
  333. 4584  IF PF AND (QU OR (SU AND NOT PG)) THEN 4635
  334. 4585  IF PF THEN IF PG THEN SJ$="<PASSWORD>" ELSE SJ$="<PROTECTED>" ELSE SJ$=MID$(R$,76,25)
  335. 4590  IF QU THEN Z$=LEFT$(R$,5)+" "+SJ$:Z=31:GOSUB 8100:A$=Z$:GOSUB 1405:GOTO 4630
  336. 4600  GOSUB 8000:IF SU OR RET THEN 4630 ELSE IF M(R,2)>LO THEN LO=M(R,2)
  337. 4610  IF NOT PF THEN 4613 ELSE IF PG THEN MR=2:GOSUB 667
  338. 4611  IF PF THEN GOSUB 4670:GOSUB 1405:GOTO 4625
  339. 4613  GOSUB 9000:GOSUB 1405:IF Q AND PL<>0 THEN 62500
  340. 4625  IF NOT FOW AND NOT REV THEN 4370
  341. 4630  IF PL=0 THEN 4631 ELSE Q=Q+QAH:IF Q<PL THEN 4631 ELSE GOSUB 5600:IF NO THEN Q=0:GOTO 4650 ELSE Q=QAH
  342. 4631  GOSUB 42010:IF RET THEN 20095
  343. 4635  NEXT:IF RT THEN 4370
  344. 4650  GOSUB 1405:A$="End of Msgs.":GOTO 2220
  345. 4670  GOSUB 1405:A$="Sorry, "+FE$+", msg # "+LEFT$(R$,5)+" is protected.":GOTO 2210
  346. 4700  IF NOT AVA GOTO 4708
  347. 4705  GOSUB 1405:A$="Chat. Remote Conversation Utility.":GOSUB 1400:TIA=VAL(MID$(TIME$,1,2))*100+VAL(MID$(TIME$,4,2)):IF(TIA>AA AND TIA<AB)OR AC THEN 4710
  348. 4707  GOTO 4750
  349. 4708  A$=NA$+" is available between"+STR$(AA)+" and"+STR$(AB)+",":GOSUB 1405:A$="but is temporarily away, "+FE$:GOSUB 1405:GOTO 4755
  350. 4710  A$="Return is to main menu in":GOSUB 1405:A$="30 sec. if SYSOP unavailable.":GOSUB 1405:K=0:A$="Paging SYSOP now.":GOSUB 1403:IA!=FNTI!+30
  351. 4730  IB!=FNTI!+1
  352. 4731  IF FNTI!<IB!GOTO 4731
  353. 4735  K=K+1:IF INKEY$=ESC$THEN 4765
  354. 4740  A$=". ":IF K MOD 2 THEN A$=A$+CHR$(7)
  355. 4744  IF LH THEN LPRINT CHR$(7);
  356. 4745  GOSUB 1403:IF FNTI!<IA!GOTO 4730 ELSE GOSUB 1405
  357. 4750  A$="Sorry "+FE$+", "+NA$+" is available between"+STR$(AA)+" and "+STR$(AB)+",":GOSUB 1405
  358. 4755  A$="Please leave a message or comment.":Z$=SPACE$(5)+"Operator paged at "+LEFT$(TIME$,5):GOSUB 5538:GOTO 2210
  359. 4765  GOSUB 1405:A$="SYSOP available! Go ahead.":GOSUB 1400
  360. 4770  CM=-1:GOSUB 49000
  361. 4775  WHILE EOF(3):A$=INKEY$:FK$=A$:GOSUB 60000:IF A$=CHR$(8) OR A$=CHR$(7) OR A$=CHR$(26) OR A$=CHR$(227) OR A$=CHR$(127)THEN 4805 ELSE IF A$=ESC$THEN CM=0:CLS:GOTO 4820
  362. 4785  IF A$=CR$AND LF THEN PRINT#3,LF$;
  363. 4790  IF A$<>"" THEN 4800
  364. 4795  WEND
  365. 4797  A$=INPUT$(1,3):IF A$=CHR$(8) OR A$=CHR$(7) OR A$=CHR$(26) OR A$=CHR$(227) THEN 4805 ELSE IF A$=CR$AND LF THEN PRINT#3,LF$;
  366. 4800  GOSUB 1403:GOTO 4775
  367. 4805  IF POS(0)>1 THEN PRINT BK1$;:PRINT#3,BK$;
  368. 4810  GOTO 4775
  369. 4820  IF AM$="U" THEN RETURN 1330 ELSE IF AM$="F" THEN RETURN 20020 ELSE GOTO 20095
  370. 4900  GOSUB 1405:A$="RBBS-PC Version "+VA$:GOSUB 1405:A$="You are caller #  ->"+STR$(CJ):GOSUB 1405:A$="# of Active msgs  ->"+STR$(LC):GOSUB 1405:IF LO>0 THEN A$="Last msg you read ->"+STR$(LO):GOSUB 1405
  371. 4950  A$="Next msg # will be->"+STR$(LE+1):GOTO 2210
  372. 5000  FOR Z=1 TO LEN(Z$):MID$(Z$,Z,1)=CHR$(ASC(MID$(Z$,Z,1))+32*(ASC(MID$(Z$,Z,1))>96)):NEXT:RETURN
  373. 5100  Z1$="":FOR Z=1 TO LEN(Z$):IF ASC(MID$(Z$,Z,1))<65 OR ASC(MID$(Z$,Z,1))>90 THEN 5105 ELSE Z1$=Z1$+MID$(Z$,Z,1)
  374. 5105  NEXT:Z$=Z1$:RETURN
  375. 5110  A$="Enter a new password":GOSUB 45010:IF Q=0 THEN RETURN ELSE IF LEN(B$(1))>15 THEN 5110 ELSE Z$=B$(1):GOSUB 5000
  376. 5120  A$="Reenter new password":GOSUB 45010:IF Q=0 THEN RETURN ELSE SWAP Z$,B$(1):GOSUB 5000:IF Z$<>B$(1)THEN A$=P$+"s don't match.":GOTO 2210
  377. 5125  IF MP AND NCH>MP AND NOT SH THEN A$="No changes permitted" ELSE Z=1:GOSUB 5140:IF NOT FG THEN 5130 ELSE A$="Temporary change":PW$=TPW$:TV!=TJA*60:UG=TFA:GOSUB 41070:GOSUB 41050:IF UG<SE THEN SH=0 ELSE SH=-1
  378. 5126  Z$=SPACE$(5)+"Temp password "+B$(1)+" used":GOSUB 5538:GOTO 2210
  379. 5130  GOSUB 26500:GOSUB 9400:GET 2,UIX#:LSET PW$=B$(1):PUT 2,UIX#:CLOSE 2:GOSUB 27500:GOSUB 1405:A$=P$+" change complete. ":STI=0:GOSUB 1405:IF MP THEN NCH=NCH+1
  380. 5131  Z$=SPACE$(5)+"Password changed to "+B$(1):GOSUB 5538:RETURN
  381. 5140  FG=0:CLOSE 2:OPEN PD$ FOR INPUT AS 2:Z$=Z$+SPACE$(15-LEN(Z$))
  382. 5150  IF EOF(2) THEN 5160 ELSE INPUT #2,TPW$,TFA,TJA:IF LEN(TPW$)>15 THEN 5150 ELSE TPW$=TPW$+SPACE$(15-LEN(TPW$)):IF Z$<>TPW$ THEN 5150 ELSE IF Z THEN FG=-1 ELSE IF UG=TFA THEN FG=-1 ELSE 5150
  383. 5160  RETURN
  384. 5200  IF Q>1 THEN 5230
  385. 5220  A$="Page length is"+STR$(PL)+". Enter new length (0=continuous)":GOSUB 1500:IF Q=0 THEN 1200
  386. 5230  A=VAL(B$(Q)):IF A<0 OR A>255 THEN 5220 ELSE PL=A:GOTO 1200
  387. 5300  NAME CQ$ AS CQ$
  388. 5310  F$=CQ$:GOSUB 43025:A$="Conference Function <J,M,Q>":GOSUB 1500:IF Q=0 THEN 2210 ELSE Z$=B$(1):GOSUB 5000:FF=INSTR("JMQ",Z$):IF FF=0 THEN 5310 ELSE ON FF GOTO 5320,5350,2210:RETURN
  389. 5320  A$="Enter conference name":GOSUB 1500:IF Q=0 THEN 5310
  390. 5323  GRN$=B$(1):MES$=MID$(MES1$,1,2)+GRN$+"M.DEF":NAME MES$ AS MES$
  391. 5325  IF NAM$<>"SYSOP" THEN GOSUB 26000:GOSUB 9400:GET 2,UIX#:GOSUB 9600:PUT 2,UIX#:GOSUB 27000
  392. 5327  UF$=MID$(UF$,1,2)+GRN$+"U.DEF":NAME UF$ AS UF$
  393. 5330  IF NAM$="SYSOP" THEN DF=0:GOSUB 134:GOTO 2210 ELSE TEA$=NAM$:SUIX#=UIX#:GOSUB 30500:GOSUB 12600:GOSUB 25000:GOSUB 27000
  394. 5340  IF FG THEN UIX#=LOC(2):GOSUB 9500:GOSUB 134:GOTO 1395 ELSE A$="Sorry, you are not in that conference.":GOSUB 1405:UIX#=SUIX#:UF$=UF1$:MES$=MES1$:GOSUB 30500:GOSUB 23000:GRF=0:GOTO 2210
  395. 5350  IF NAM$="SYSOP" THEN MES$=MES1$:UF$=UF1$:GRF=0:GOSUB 135:GOTO 2210
  396. 5360  IF GRF THEN GOSUB 26000:GOSUB 9400:GET 2,UIX#:GOSUB 9600:PUT 2,UIX#:GOSUB 27000:MES$=MES1$:UF$=UF1$:GRF=0:GOSUB 9400:UIX#=MUIX#:GET 2,UIX#:GOSUB 9500:GOSUB 135:GOTO 2210 ELSE GOTO 2210
  397. 5500  IF BPS=-3 THEN A$="Sorry, 1200 baud connect cannot change speed.":GOTO 2210
  398. 5507  A$="Change to 450 baud":GOSUB 1500:IF NOT YES THEN RETURN
  399. 5510  A$="Change to 450 baud and press <C/R> until I respond.":GOSUB 1405:FOR I=1 TO 3:GOSUB 50510:NEXT:C=0:SWAP Q,NE:GOSUB 1654:SWAP Q,NE
  400. 5530  C=C+1:GOSUB 42000:IF C=20 THEN 10595 ELSE GOSUB 50500
  401. 5535  IF NOT EOF(3)THEN IF ASC(INPUT$(1,3))=13 THEN 5540
  402. 5537  GOTO 5530
  403. 5538  GOSUB 56000:LSET CL$=Z$:CDX=CDX+1:PUT 2,CDX:IF LH THEN LPRINT Z$
  404. 5539  RETURN
  405. 5540  Z$="   Change to 450 baud completed.":GOSUB 5538:A$=Z$:GOSUB 1405:BPS=-2:RETURN
  406. 5600  GOSUB 41000:IF NH THEN RETURN ELSE A$=LEFT$(LG$(0),13):GOSUB 1500:RETURN
  407. 6000  IF STI THEN GOSUB 1405:A$="* <Ctrl K> to abort. <Ctrl S> to suspend *":GOSUB 1400
  408. 6020  CLOSE 2:OPEN "I",2,F$:Q=0:GOTO 6040
  409. 6030  Q=-1
  410. 6040  IF EOF(2)OR(INP(MSR)<128 AND NOT LJ)THEN 6060
  411. 6045  IF PL AND Q>=0 THEN Q=Q+1:IF Q>=PL THEN GOSUB 5600:IF NO THEN 6060 ELSE Q=0
  412. 6050  LINE INPUT #2,A$:A$=A$+NUL$:GOSUB 1405:IF NOT RET THEN 6040
  413. 6060  Q=0:CLOSE 2:IF NOT LJ THEN GOSUB 42000
  414. 6070  RETURN
  415. 6080  A$="Please tell the SYSOP file <"+F$+"> is missing!":GOTO 2210
  416. 7000  A$="Scanning "+MID$(F$,3):GOSUB 1405:NJ=-1:CLOSE 2:OPEN "I",2,F$:Q=0
  417. 7040  IF EOF(2)OR(INP(MSR)<128 AND NOT LJ)THEN 7200
  418. 7045  IF PL AND Q>=0 THEN Q=Q+1:IF Q>=PL THEN GOSUB 5600:IF NO THEN 7200 ELSE Q=0
  419. 7050  LINE INPUT #2,A$:A$=A$+NUL$:IF LEN(A$)<2 THEN 7100
  420. 7057  IF INSTR(A$,"--") THEN 7100
  421. 7060  A=INSTR(9,MID$(A$,1,32),"/"):IF A>0 THEN 7070
  422. 7065  A=INSTR(9,MID$(A$,1,32),"-"):IF A=0 THEN 7100
  423. 7070  A=A-2:IF A>0 THEN PAD$=FNDC$(MID$(A$,A,8)) ELSE Q=Q-1:GOTO 7040
  424. 7075  IF MID$(PAD$,3,1)=" " THEN MID$(PAD$,3,1)="0
  425. 7085  IF MID$(PAD$,5,1)=" " THEN MID$(PAD$,5,1)="0
  426. 7089  IF PAD$=>LM$ AND NJ THEN NJ=0:CLOSE 2:OPEN "I",2,F$:Q=0:GOTO 7040
  427. 7090  IF PAD$=>LM$ THEN 7100 ELSE Q=Q-1:GOTO 7040
  428. 7100  IF NJ THEN 7040
  429. 7101  GOSUB 1405:IF NOT RET THEN 7040 ELSE 7200
  430. 7200  A$="":Q=0:CLOSE 2:IF NOT LJ THEN GOSUB 42000
  431. 7210  RETURN
  432. 8000  GOSUB 1405:IF RET THEN RETURN
  433. 8020  IF MID$(R$,37,3)="ALL" THEN T$="ALL":GOTO 8040
  434. 8030  Z=22:Z$=MID$(R$,37,Z):GOSUB 8100:T$=Z$
  435. 8040  Z=25:Z$=MID$(R$,76,Z):GOSUB 8100:SUB$=Z$:IF PF THEN SUB$=SJ$
  436. 8050  Z=31:Z$=MID$(R$,6,Z):GOSUB 8100:FI$=Z$:A$="Msg # "+LEFT$(R$,5)+" Dated "+MID$(R$,68,8)+" "+MID$(R$,59,8):GOSUB 1405:IF NOT RET THEN A$="From: "+FI$
  437. 8070  GOSUB 1405:IF NOT RET THEN A$="  To: "+T$:GOSUB 1405:A$="  Re: "+SUB$:GOSUB 1405
  438. 8080  RETURN
  439. 8100  Z=LEN(Z$):FOR I=1 TO LEN(Z$):IF MID$(Z$,Z,1)<>" " THEN 8110
  440. 8105  Z=Z-1:NEXT
  441. 8110  Z$=MID$(Z$,1,Z):RETURN
  442. 9000  GOSUB 1405:Q=4:FOR X=2 TO VAL(MID$(R$,118)):GOSUB 1403:EOL=0:J=1:GET 1
  443. 9050  B=INSTR(J,R$,CHR$(227)):IF RET THEN RETURN
  444. 9060  C=B-J:IF C<0 THEN C=128:EOL=-1
  445. 9070  A$=MID$(R$,J,C):IF EOL THEN 9090
  446. 9075  GOSUB 1405:J=B+1:IF PL THEN Q=Q+1:IF Q>=PL THEN GOSUB 5600:Q=0:IF NO THEN RETURN
  447. 9085  GOTO 9050
  448. 9090  NEXT:A$="":RETURN
  449. 9100  GOSUB 1405:H=VAL(LEFT$(TI$,2)):M=VAL(MID$(TI$,4,2)):S=VAL(MID$(TI$,7,2)):HH=VAL(LEFT$(TIME$,2)):MM=VAL(MID$(TIME$,4,2)):SS=VAL(MID$(TIME$,7,2)):IF S=<SS THEN SSS=SS-S ELSE SSS=60-(S-SS):M=M+1
  450. 9150  IF M=<MM THEN MMM=MM-M ELSE MMM=60-(M-MM):H=H+1
  451. 9160  IF H=<HH THEN HHH=HH-H ELSE HHH=24-(H-HH)
  452. 9170  GOSUB 41510:A$="It is now "+TIM$+".":GOSUB 1405:A$="You have been on for":GOSUB 1403:IF HHH>0 THEN A$=STR$(HHH)+" Hours":GOSUB 1403
  453. 9200  A$=STR$(MMM)+" Min. and"+STR$(SSS)+" Sec.":GOTO 2210
  454. 9300  NK=NOT NK:A$="<Nulls> ":IF NK THEN NUL$=CHR$(0)+CHR$(0)+CHR$(0)+CHR$(0)+CHR$(0):A$=A$+"on" ELSE NUL$="":A$=A$+"off"
  455. 9320  GOTO 2210
  456. 9400  CLOSE 2:OPEN "R",2,UF$,128:FIELD 2,31 AS N$,15 AS PW$,2 AS SL$,14 AS OP$,24 AS CS$,19 AS MA$,14 AS TD$,3 AS LND$,2 AS UDL$,2 AS UUL$,2 AS ET$:RETURN
  457. 9500  UG=CVI(SL$):LO=CVI(MID$(OP$,3,2)):LF=CVI(MID$(OP$,5,2)):MQ=CVI(MID$(OP$,7,2)):BA=CVI(MID$(OP$,9,2)):XPR=CVI(MID$(OP$,11,2)):PL=ASC(MID$(OP$,13)):RETURN 
  458. 9600  LSET OP$=MKI$(TGA)+MKI$(LO)+MKI$(LF)+MKI$(MQ)+MKI$(BA)+MKI$(XPR)+CHR$(PL)+STRING$(1,0):RETURN
  459. 9700  IF BC<1 THEN A$="Sorry, "+FE$+" there are no bulletins today.":GOTO 2210
  460. 9705  F$=LG$(8):GOSUB 1790
  461. 9707  NH=0:GOSUB 1405:A$="Bulletin # <1 through"+STR$(BC)+", L)ist or C/R to end>":GOSUB 1500:IF Q=0 THEN GOSUB 1405:RETURN
  462. 9708  IF B$(1)="L" OR B$(1)="l" THEN 9705
  463. 9711  Z$=B$(1):IF VAL(Z$) >0 AND VAL(Z$) <=BC THEN 9720 ELSE 9705
  464. 9720  GOSUB 5000:F$=LG$(7)+Z$:STI=-1:GOSUB 1790:STI=0:GOTO 9707
  465. 9800  IF GRF THEN 9820 ELSE GOSUB 1405:GOSUB 30500:FOR X=2 TO MNODES+1:GET 1,X:A$=MID$(R$,1,31)+"Node"+STR$(X-1):IF MID$(R$,57,1)="A" THEN A$=A$+" Active" ELSE A$=A$+" Inactive
  466. 9810  GOSUB 1405:NEXT:RETURN
  467. 9820  A$="Node display not available while Conference active!":GOSUB 1400:RETURN
  468. 10070  F$=CG$:GOSUB 6000:RETURN
  469. 10090  A$=CR$+"List - <U>sers, <R>ecent callers, C/R to return":GOSUB 1500:IF Q=0 THEN RETURN ELSE Z$=B$(1):GOSUB 5000:ON INSTR("UR",Z$)+1 GOTO 10090,10096,10100
  470. 10096  GOSUB 12700:GOSUB 9400:STI=-1:Q=0:FOR I=1 TO NUR-1:GET 2,I:A$=LEFT$(N$,20)+CS$+MA$+TD$:GOSUB 1405:IF RET THEN RETURN
  471. 10098  IF PL AND Q>=0 THEN Q=Q+1:IF Q>=PL THEN GOSUB 5600:IF NO THEN RETURN ELSE Q=0
  472. 10099  NEXT:STI=0:RETURN
  473. 10100  F$=CF$:GOSUB 57000:RETURN
  474. 10390  A$="Msg # to Recover":GOSUB 1500:MM=VAL(B$(1)):IF MM<1 THEN 1450
  475. 10410  R=FMR:GOSUB 1405:GOSUB 30500
  476. 10420  GET 1,R:RR=VAL(MID$(R$,118)):IF R=>NMR THEN A$="No Msg #"+STR$(MM):GOTO 2210
  477. 10440  IF VAL(MID$(R$,2,4))<>MM THEN R=R+RR:GOTO 10420
  478. 10450  IF INSTR(R$,CHR$(226))<>0 THEN GOSUB 22000:LSET R$=LEFT$(R$,115)+CHR$(225)+MID$(R$,117):PUT 1,LOC(1):GOSUB 25000:A$="Msg #"+STR$(MM)+" is restored.":GOSUB 1405:GOTO 10490
  479. 10480  A$="Msg #"+STR$(MM)+" is not Dead.":GOTO 2210
  480. 10490  A$="Re-Loading Msg File.":GOSUB 1405:GOSUB 135:GOTO 2210
  481. 10530  A$="Delete all comments":GOSUB 1500:IF YES THEN CLOSE 2:OPEN "O",2,CG$:CLOSE 2
  482. 10550  GOTO 20095
  483. 10553  IF DAY THEN A$="Daily time limit exceeded!  Try tomorrow.":GOSUB 1405
  484. 10555  IF KG THEN RETURN
  485. 10560  GOSUB 9100:A$="Thanks for calling, "+FE$+"!":GOSUB 1405
  486. 10595  IF CINT(UIX#)<1 THEN CLS:GOTO 13540
  487. 10597  GOSUB 13700:IF GRF THEN GOSUB 26500:GOSUB 9400:GET 2,UIX#:GOSUB 9600:PUT 2,UIX#:GOSUB 27500:MES$=MES1$:UF$=UF1$:UIX#=MUIX#:GOSUB 9400:GET 2,UIX#:GOSUB 9500
  488. 10600  SH=0:GOSUB 26500:GOSUB 9400:GET 2,UIX#:GOSUB 9600:IF LD THEN LSET LND$=FNCD$(D$)
  489. 10605  LSET UDL$=MKI$(DLD):LSET UUL$=MKI$(ULD):GOSUB 41010:LSET ET$=MKI$(ET+(TV!/60)-TR!):PUT 2,UIX#:GOTO 13540
  490. 10620  Z$=SPACE$(5)+LG$(I):GOSUB 5538:Z$=NAM$+" on at "+D$+", "+TIM$+"***** LOGON DENIED *****, "+BF$+PE$:NG$=Z$+SPACE$(128-LEN(Z$)):IF LH THEN LPRINT Z$
  491. 10698  GOSUB 1405:A$="You are denied access.":GOSUB 1400:GOTO 13540
  492. 10720  CLS:FILES B$(J):LP=CSRLIN:IF CE THEN W=13:P=1 ELSE W=18:P=2 
  493. 10725  LOCATE P,1,1:FOR I=P TO LP:FOR B=1 TO 66 STEP W:G=G+1:B$(G)="":FOR JJ=0 TO 11:H=SCREEN(I,(B+JJ)):B$(G)=B$(G)+CHR$(H):NEXT:IF INSTR(B$(G),".")>0 THEN 10840
  494. 10733  IF LN AND LG$(13)="YES" AND B$(G) = DIR$+SPACE$(12-LEN(DIR$)) THEN G=G-1:GOTO 10840
  495. 10737  IF LN AND LG$(14)="YES" AND B$(G) = UB$+SPACE$(12-LEN(UB$)) THEN G=G-1:GOTO 10840
  496. 10740  IF LEFT$(B$(G),1)=" " THEN G=G-1:RETURN
  497. 10840  NEXT:NEXT:RETURN
  498. 10925  MS=-1:GOSUB 3100:MS=0:RETURN
  499. 10930  IF DA<2 THEN A$="Unsupported by current level of DOS.":GOTO 1200
  500. 10932  IF LJ THEN A$="Only for remote SYSOP's":GOTO 1200
  501. 10934  CLOSE 2:OPEN "O",2,CH$:PRINT#2,"ECHO OFF":PRINT#2,"CTTY "+CP$:PRINT#2,"ECHO RBBS-PC "+VA$:PRINT#2,"ECHO SYSOP in Remote Console Mode at "+TIME$+" on "+DATE$:PRINT#2,"COMMAND ":PRINT#2,"CTTY CON":PRINT#2,RC$:GOSUB 56000
  502. 10950  GOSUB 41500:LSET CL$=SPACE$(5)+"Exited to DOS 2.0 at "+TIM$:IF LH THEN LPRINT CL$
  503. 10960  GOTO 10992
  504. 10970  IF NOT WA THEN A$="All RBBS-PC doors are closed.":GOTO 2220
  505. 10973  F$=ME$(5):GOSUB 43025:IF UG<UDR THEN A$="Your access level will not allow you to open a door.":GOSUB 1405:GOTO 2210
  506. 10974  A$="Which door would you like opened? (C/R to end)":GOSUB 1500:Z$=B$(1):GOSUB 5000:IF B$(1)=""THEN RETURN
  507. 10976  CLOSE 2:OPEN "I",2,F$
  508. 10978  IF EOF(2)THEN A$="There is no "+Z$+" door!.":GOSUB 1405:GOTO 1200 ELSE GOSUB 42010
  509. 10982  LINE INPUT#2,A$:IF LEN(A$)<LEN(Z$)GOTO 10978
  510. 10984  IF INSTR(A$,Z$)THEN 10985 ELSE 10978
  511. 10985  Z$=Z$+".BAT
  512. 10986  NAME Z$ AS Z$
  513. 10987  CLOSE 2:OPEN "O",2,CH$:PRINT#2,Z$:PRINT#2,RC$:CLOSE 2:A$="RBBS-PC "+Z$+" window opened at "+TIME$+" on "+DATE$:GOSUB 1405:WI=-1:GOSUB 56000:LSET CL$=SPACE$(5)+LEFT$(Z$,LEN(Z$)-4)+" window opened!":IF LH THEN LPRINT CL$
  514. 10992  CLOSE 3:OUT MCR,INP(MCR)OR 1:IF WI THEN IF MC THEN DEF SEG=MC:GOSUB 60400:POKE(&H64+PEEK(&H58)+256*PEEK(&H59)+&HC),ASC(RIGHT$(CP$,1))-48:AX=&H700+MTERM:GOSUB 60510:GOSUB 60430
  515. 10996  CDX=CDX+1:PUT 2,CDX:GOSUB 43050:SYSTEM
  516. 11000  A$="A)dd, L)ist, P)rint, or M)odify users (C/R to quit)":GOSUB 1500:IF Q=0 THEN 20095 ELSE QQ=0:Z$=LEFT$(B$(1),1):GOSUB 5000:IF Z$="A" THEN 12300 ELSE IF Z$="M"THEN STI=0 ELSE IF Z$="P"THEN QQ=-1
  517. 11005  GOSUB 9400:Z=1
  518. 11010  FOR J=Z TO NUR-1:GET 2,J
  519. 11015  IF ASC(N$)=0 THEN 11300 ELSE OF=CVI(SL$):A$=STR$(LOC(2))+":"+N$+" SECURITY "+STR$(OF)+" ":IF OF<MO THEN A$=A$+" <Locked out>":GOTO 11100
  520. 11020  A$=A$+"Pw="+PW$+" Times on="+STR$(CVI(MID$(OP$,1,2)))
  521. 11025  IF QQ THEN LPRINT A$
  522. 11027  GOSUB 1405:RH=RET:IF OF>=SE THEN A$="  (SYSOP)   " ELSE A$=SPACE$(12)
  523. 11030  A$=A$+TD$+" "+CS$+MA$
  524. 11100  IF QQ THEN LPRINT A$
  525. 11101  GOSUB 1405:RH=RET:A$="  DOWNLOADS="+STR$(CVI(UDL$)):A$=A$+SPACE$(30-LEN(A$))+"UPLOADS="+STR$(CVI(UUL$)):A$=A$+SPACE$(60-LEN(A$))+"TIME USED="+STR$(CVI(ET$))+" Min.":IF QQ THEN LPRINT A$
  526. 11105  GOSUB 1405:IF STI THEN 11300
  527. 11110  A$="D)elete, F)ind, M)enu, N)ew pswrd, P)rint, Q)uit, S)ecurity, #)user":GOSUB 1500:IF Q=0 THEN 11310
  528. 11115  Z$=LEFT$(B$(1),1):GOSUB 5000:X=INSTR("DNPQFSM",Z$):ON X GOTO 11130,11160,11220,11320,11340,11390,11330
  529. 11125  Z=VAL(B$):IF Z<1 OR Z>NUR-1 THEN 11310 ELSE 11010
  530. 11130  LSET N$=STRING$(31,0):GOTO 11290
  531. 11160  GOSUB 12800:GOTO 11290
  532. 11220  QQ=NOT QQ:GOTO 11015
  533. 11290  UIX#=LOC(2):GOSUB 26500:PUT 2,UIX#:GOSUB 27500:UIX#=0:GOTO 11015
  534. 11300  IF RH THEN 11330
  535. 11310  NEXT
  536. 11320  CLOSE 2:GOTO 20095
  537. 11330  CLOSE 2:GOTO 11000
  538. 11340  GOSUB 1405:A$="Enter full name to find":GOSUB 1500:Z$=B$(1):GOSUB 5000:TEA$=Z$:GOSUB 30500:GOSUB 12600:GOSUB 27000:GOSUB 25000:IF FG THEN 11015
  539. 11380  A$=TEA$+" not found.":GOSUB 1400:GOTO 11310
  540. 11390  GOSUB 11395:LSET SL$=MKI$(OF):GOTO 11290
  541. 11395  A$="Enter security level":GOSUB 1500:Z$=B$(1):GOSUB 5000:OF=VAL(Z$):RETURN
  542. 12300  A1$="":TDA=0:LG$(18)=FE$:T7$=LK$:T8$=NAM$:GOSUB 12500:TEA$=NAM$:GOSUB 30500:GOSUB 12600:GOSUB 25000:GOSUB 12630:IF FG THEN PRINT "User already exists.":GOTO 12320
  543. 12310  GOSUB 12800:GOSUB 11395:TFA=OF:GOSUB 12900:LSET TD$=D$+" "+TI$:GOSUB 12950:LSET CS$=Z$:LSET ET$=MKI$(0)
  544. 12320  PUT 2,UIX#:GOSUB 27500:UIX#=0:FE$=LG$(18):LK$=T7$:NAM$=T8$:GOTO 11000
  545. 12500  IF TDA>5 THEN TEX=-1:RETURN
  546. 12510  GOSUB 12700:TDA=TDA+1:GOSUB 1405:A$=A1$+"FIRST Name":GOSUB 1500:IF Q=0 THEN 12500 ELSE Z$=B$(1):GOSUB 5000:GOSUB 5100:FE$=FNSS$(Z$):IF Q=1 THEN 12530
  547. 12520  Z$=B$(2):GOTO 12540
  548. 12530  A$=A1$+"LAST Name":GOSUB 1500:Z$=B$(1)
  549. 12540  GOSUB 5000:GOSUB 5100:LK$=FNSS$(Z$):IF LEN(FE$)<2 OR LEN(LK$)<2 OR (LEN(FE$)+LEN(LK$))>30 THEN 12500
  550. 12550  NAM$=MID$(FE$+" "+LK$,1,31):Z$=FE$:RETURN
  551. 12570  FG=0:CLOSE 2:OPEN LG$(18) FOR INPUT AS 2
  552. 12580  IF EOF(2) THEN 42020 ELSE INPUT #2,DF$:IF Z$<>DF$ THEN 12580 ELSE FG=-1:RETURN
  553. 12595  A$="Your real name is required.":GOSUB 1405:A$="This call has been traced/recorded.":GOTO 10698
  554. 12600  GOSUB 22000:GOSUB 23000:GOSUB 26000:A$="Checking User File.":GOSUB 1400:GOSUB 9400:X$=TEA$+SPACE$(31-LEN(TEA$)):UIX#=0
  555. 12610  IF LOC(2)=NUR THEN FG=0:RETURN ELSE GET 2:IF ASC(N$)=0 THEN UIX#=LOC(2):GOTO 12610
  556. 12620  IF X$<>N$ THEN 12610 ELSE FG=-1:RETURN
  557. 12630  IF UIX# THEN GET 2,UIX# ELSE UIX#=NUR:GOSUB 22000:GOSUB 23000:NUR=NUR+1:GOSUB 24000:GOSUB 25000
  558. 12631  GOSUB 27000:GOSUB 26500:RETURN
  559. 12700  IF GRF THEN A$="Users of "+GRN$+" conference:":GOSUB 1405:RETURN ELSE RETURN
  560. 12800  A$="For future calls, set your PASSWORD (not IBMPC)":GOSUB 1500:IF Q=0 THEN 12800 ELSE IF LEN(B$(1))>15 THEN A$="15 Char. Max.":GOSUB 1405:GOTO 12800 ELSE Z$=B$(1):GOSUB 5000:LSET PW$ = Z$:RETURN
  561. 12900  LSET N$=NAM$:LSET OP$=MKI$(0)+MKI$(0)+MKI$(-1)+MKI$(64)+STRING$(4,0)+CHR$(PL)+STRING$(1,0):LSET UDL$=MKI$(0):LSET UUL$=MKI$(0):LSET SL$=MKI$(TFA):LSET ET$=MKI$(0):RETURN
  562. 12950  A$="Type of system (C/R if IBMPC)"+A1$:GOSUB 1500:IF Q=0 THEN LSET MA$="IBMPC" ELSE LSET MA$=B$(1)
  563. 12960  A$="CITY and STATE"+A1$:GOSUB 1500:IF Q=0 THEN 12960 ELSE Z$=B$(1):GOSUB 5000:RETURN
  564. 13000  IF ERR=7 THEN 13650
  565. 13010  IF ERL=175 AND ERR=63 THEN RESUME 187
  566. 13020  IF ERL=187 AND (ERR=24 OR ERR=25 OR ERR=27 OR ERR=68) THEN LH=0:RESUME 187
  567. 13025  IF ERL=677 AND ERR=5 THEN RESUME 670
  568. 13030  IF ERL=841 THEN LH=0:RESUME 841
  569. 13033  IF ERL=825 AND ERR=5 THEN RESUME 830
  570. 13035  IF ERL=954 AND ERR=5 THEN JJ=JJ-LEN(FH$):FH$="":RESUME 954
  571. 13037  IF ERL=4370 AND ERR=6 THEN RESUME 1200
  572. 13040  IF ERL=4744 AND (ERR=24 OR ERR=25 OR ERR=27) THEN LH=0:RESUME 4744
  573. 13045  IF ERL=5130 AND ERR=63 THEN RESUME 5160
  574. 13047  IF ERL=5150 AND ERR=62 THEN RESUME 5160
  575. 13050  IF ERL=5538 AND (ERR=24 OR ERR=25 OR ERR=27) THEN LH=0:RESUME 42020
  576. 13060  IF ERL=11025 THEN QQ=0:RESUME 11025
  577. 13070  IF ERL=11100 THEN QQ=0:RESUME 11100
  578. 13080  IF ERL=13110 THEN LH=0:RESUME 13110
  579. 13085  IF ERL=20231 THEN LH=0:RESUME 20233
  580. 13087  IF ERL=20242 AND ERR=62 THEN RESUME 20247
  581. 13090  IF ERR=58 THEN 13130
  582. 13100  IF(ERR=EC AND(FNTI!-TKA!<5))THEN EA=EA+1:IF EA>10 THEN 50000
  583. 13110  IF (ERR<>53 AND ERR<>57 AND ERR<>61 AND ERR<>64 AND ERR<>69) THEN A$="+++ Error "+STR$(ERR)+" line "+STR$(ERL)+" at "+TIME$+" on "+DATE$:GOSUB 13670
  584. 13115  IF(ERR<>53 AND ERR<>57 AND ERR<> 61 AND ERR<> 64 AND ERR<> 69 AND LH)THEN LPRINT "+++ Error ";ERR;"  in line ";ERL" occurred at "TIME$+" on "+DATE$
  585. 13120  EC=ERR:IF FNTI!-TKA!>5 THEN EA=0 ELSE TKA!=FNTI!
  586. 13130  IF ERL=117 AND ERR=53 THEN DF$=CA$:GOTO 13600
  587. 13135  IF ERL=121 AND ERR=62 THEN DF$=CA$:GOTO 13600
  588. 13140  IF ERL=220 THEN RESUME 220
  589. 13150  IF(ERL=340 AND NOT BE)THEN OUT LCR,&H3:RESUME 335
  590. 13160  IF ERL=340 THEN RESUME 345
  591. 13170  IF ERL<1200 THEN RESUME 10595
  592. 13180  IF ERL=1420 AND ERR=57 THEN R1=INP(LSR):RESUME 1425
  593. 13190  IF ERL=1540 OR ERL=3736 OR ERL=20840 OR ERL=21280 OR ERL=21360 OR ERL=21420 THEN GOSUB 50500:IF INP(MSR)<128 THEN RESUME 10595
  594. 13200  IF ERL=1540 THEN RESUME 1540
  595. 13220  IF ERL=3736 THEN RESUME 3736
  596. 13230  IF ERL=4797 THEN GOSUB 50500:GOSUB 13670:IF INP(MSR)<128 THEN RESUME 10595 ELSE RESUME 4797
  597. 13235  IF ERL=5140 AND ERR=53 THEN Z$=SPACE$(5)+"FILE <"+PD$+"> missing!":GOSUB 5538:IF Z=1 THEN Z$=B$(1):GOSUB 5000:RESUME 5160 ELSE RESUME 5160
  598. 13237  IF ERL=5300 THEN IF ERR=53 THEN RESUME 2210 ELSE RESUME 5310
  599. 13238  IF ERL=5323 THEN IF ERR=53 OR ERR=64 THEN MES$=MES1$:RESUME 5310 ELSE RESUME 5325
  600. 13239  IF ERL=5327 THEN IF ERR=53 OR ERR=64 THEN MES$=MES1$:UF$=UF1$:RESUME 5310 ELSE RESUME 5330
  601. 13240  IF ERL=5535 AND ERR=57 THEN R1=INP(LSR):RESUME 20015
  602. 13250  IF ERL=5535 THEN RESUME 5530
  603. 13260  IF ERL=6020 THEN RESUME 6080
  604. 13270  IF ERL=6050 AND ERR=52 THEN RESUME 6060
  605. 13280  IF ERL=10600 AND ERR=63 THEN 10595
  606. 13310  IF ERL=10720 THEN IF ERR=53 OR ERR=64 THEN RESUME 1630
  607. 13312  IF ERL=10986 AND ERR=58 THEN RESUME 10987
  608. 13314  IF ERL=10986 THEN A$="Tell the SYSOP that the "+Z$+" door is closed.":GOSUB 1405:RESUME 1200
  609. 13340  IF ERL=12570 AND ERR=53 THEN RESUME 710
  610. 13355  IF ERL=20165 AND ERR=58 THEN RESUME 20167
  611. 13357  IF ERL=20165 THEN RESUME 20170
  612. 13360  IF ERL=20220 AND ERR=53 THEN RESUME 20225
  613. 13370  IF ERL=20220 AND ERR=58 THEN OK=-1:RESUME 20225
  614. 13372  IF ERL=20220 AND ERR=64 THEN A$="Invalid file name":GOSUB 1405:RESUME 20200
  615. 13375  IF ERL=20240 AND ERR=53 THEN Z$=SPACE$(5)+"FILE <"+FB$+"> missing!":GOSUB 5538:RESUME 20247
  616. 13380  IF ERL=20440 AND ERR=53 THEN OK=-1:RESUME 20450
  617. 13385  IF ERL=20440 THEN IF ERR=64 OR ERR=69 THEN RESUME 20420 ELSE RESUME 20450
  618. 13390  IF ERL=20450 THEN OK=0:RESUME 20455
  619. 13400  IF ERL=20620 THEN OK=0:RESUME 20621
  620. 13405  IF ERL=20735 AND ERR=53 THEN RESUME 42020
  621. 13410  IF ERL=20840 THEN RESUME 20840
  622. 13420  IF ERL=21130 THEN OK=0:RESUME 21131
  623. 13430  IF ERL=21280 THEN RESUME 21280
  624. 13440  IF ERL=21360 THEN RESUME 21360
  625. 13442  IF ERL=21420 THEN RESUME 21420
  626. 13443  IF ERL=43030 AND ERR=58 THEN OK=-1:RESUME 43031
  627. 13445  IF ERL=43030 AND ERR=53 THEN RESUME 43031
  628. 13446  IF ERL=52000 AND ERR=53 THEN IF Z$=CG$ THEN CLOSE 2:OPEN "O",2,CG$:CLOSE 2:RESUME 52000
  629. 13447  IF ERL=52000 AND ERR=53 THEN A$="Upload directory file is missing!  Please inform sysop.":GOSUB 1405:RESUME 1200
  630. 13450  IF 65535=ERL THEN 50000
  631. 13460  IF ERR=5 THEN 10595
  632. 13470  IF ERR=57 OR ERR=24 OR ERR=25 THEN GOSUB 50500:R1=INP(MSR):IF R1<128 THEN RESUME 10595
  633. 13480  IF ERR=61 THEN GOSUB 1405:A$="<< Disk is full -- operation terminated. >>":GOSUB 1400:RESUME 1200
  634. 13490  IF ERR=71 THEN GOSUB 13630:RESUME 20020
  635. 13500  A$="Software bug found.":GOSUB 1405:A$="Tell the SYSOP that":GOSUB 1405:A$="Error "+STR$(ERR)+" occured in Line "+STR$(ERL)+".":GOSUB 1405:PRINT:RESUME 1200
  636. 13540  IF LJ THEN 13549
  637. 13543  IF NOT SH THEN IF CINT(UIX#)<1 OR NF=-1 THEN 13549
  638. 13545  GOSUB 56000:GOSUB 43050
  639. 13549  GOSUB 13700:GOSUB 13550:GOSUB 21990:GET 1,NODE:MID$(R$,57,1)="I":PUT 1,NODE:GOSUB 25000:CLOSE:OUT MCR,&H4:GOSUB 50510:OUT MCR,&H0:IF CYC THEN GOTO 31000 ELSE RUN
  640. 13550  IF LJ THEN RETURN
  641. 13560  GOSUB 50510:OUT MCR,INP(MCR) AND 254:GOSUB 50500:OUT MCR,INP(MCR) OR 1:RETURN
  642. 13600  CLS:LOCATE,,0:PRINT DF$+" file not found/invalid.  Create one with "+VA$+"'s utility program -- CONFIG.":GOSUB 50510:GOTO 31000
  643. 13630  A$="The SYSOP left the drive door open.":GOSUB 1405:A$="File Menu not available.":GOSUB 1405:RETURN
  644. 13650  CLS:LOCATE,,0:PRINT"Not enough memory for RBBS-PC":GOSUB 50510:GOTO 31000
  645. 13670  CLOSE 2:OPEN "R",2,CF$,64:FIELD 2,64 AS CL$:A$=STRING$(5," ")+A$:LSET CL$=A$:CDX=CDX+1:PUT 2,CDX:A$="":RETURN
  646. 13700  IF NQ THEN GOSUB 25000
  647. 13710  IF UQ THEN GOSUB 27000
  648. 13720  IF UQB THEN GOSUB 27500
  649. 13730  RETURN
  650. 14500  A$="ATQ1E1C0H1M0":GOSUB 52070:GOSUB 50510:CLOSE 3:RETURN
  651. 20000  GOSUB 1405:A$="Entering File Subsystem.":GOSUB 1405
  652. 20015  GOSUB 49000:IF LJ GOTO 20020
  653. 20020  AM$="F":GOSUB 41050:NH=0:IF NOT XPR THEN F$=ME$(3):GOSUB 43025
  654. 20030  GOSUB 1405:A$="File Function <D,G,H,L,N,Q,U,?>":GOSUB 1500:IF Q=0 THEN 20015
  655. 20050  LN=0:Z$=B$(1):GOSUB 5000:FF=INSTR("DGHLNQU?",Z$):IF FF=0 THEN J=1:GOSUB 1360:GOTO 20015 ELSE IF UG<FS(FF) THEN VD$="File "+Z$:GOSUB 1380:GOTO 20020
  656. 20070  ON FF GOSUB 20180,20100,20110,20150,53000,20090,20400,20130:GOTO 20015
  657. 20090  RETURN 20095
  658. 20095  RETURN 1200
  659. 20100  RETURN 10560
  660. 20110  F$=HE$(5):GOTO 1790
  661. 20130  F$=HE$(6):GOTO 1790
  662. 20150  IF SH THEN ED=LEN(FA$) ELSE ED=LEN(FA$)-1
  663. 20153  LD=-1:IF Q<2 THEN Q=2:B$(Q)=""
  664. 20160  X=2:QX=Q
  665. 20161  IF X>QX THEN RETURN
  666. 20162  FOR SM=1 TO ED:F$=MID$(FA$,SM,1)+":"+DIR$+B$(X)
  667. 20165  GOSUB 43030:NAME F$ AS F$
  668. 20167  IF LN THEN GOSUB 7000:GOTO 20175 ELSE GOSUB 6000:GOTO 20175
  669. 20170  NEXT:A$="Directory # "+B$(X)+" unavailable!.":GOSUB 1400
  670. 20175  X=X+1:GOTO 20161
  671. 20180  IF Q>1 THEN B=2:GOTO 20202
  672. 20200  A$=F8$+"download":GOSUB 1500:B=1:IF Q=0 THEN RETURN
  673. 20202  A=1:IF Q>B THEN A=VAL(B$(B+1)):IF A<1 THEN A=1
  674. 20205  Z$=B$(B):VD$="Download ":FOR X=A TO LEN(FA$)-1:GOSUB 20741:ON A GOTO 20220,20231
  675. 20220  OK=0:NAME F$ AS F$
  676. 20225  IF OK THEN 20235
  677. 20230  NEXT
  678. 20231  A$="<"+B$(B)+"> not found! Type L for directory.":GOSUB 1400:IF LH THEN LPRINT SPACE$(5);"File ";B$(B);" not found.
  679. 20233  RETURN 20020
  680. 20235  Z$=F$:A$=MES$:GOSUB 43040:A$=LG$(11):GOSUB 43040:A$=CG$:GOSUB 43040:A$=UF$:GOSUB 43040:A$=UF$+".BAK":GOSUB 43040:A$=CF$:GOSUB 43040:A$=RC$:GOSUB 43040:A$=CH$:GOSUB 43040:A$=PD$:GOSUB 43040:A$=FB$:GOSUB 43040:FH$="(D) "+Z$
  681. 20240  CLOSE 2:OPEN FB$ FOR INPUT AS 2:N$=Z$:GOSUB 20282:LG$(9)=DR$:T7$=PRE$:T8$=EXT$
  682. 20242  IF EOF(2) THEN 20247 ELSE INPUT #2,N$,DF,DF$:GOSUB 20282
  683. 20243  IF DR$<>"" AND DR$<>LG$(9) THEN 20242 ELSE A$=T7$:Z$=PRE$:GOSUB 20285:IF OK THEN 20242 ELSE A$=T8$:Z$=EXT$:GOSUB 20285:IF OK THEN 20242
  684. 20244  IF UG<DF THEN 20245 ELSE IF DF$="" THEN 20247 ELSE Z$=DF$:GOSUB 5000:DF$=Z$:IF DF$=PW$ THEN 20247 ELSE A$="Enter PASSWORD for downloading "+F$:GOSUB 1500:Z$=B$(1):GOSUB 5000:IF Z$=DF$ THEN 20247
  685. 20245  VD$="DownLoad "+F$:GOSUB 1380:RETURN 20015
  686. 20247  DF=0:EXT$=RIGHT$(F$,4):IF INSTR(".EXE.COM.OBJ.WKS.LBR.WRK",EXT$) OR MID$(EXT$,3,1)="Q" OR (BD AND EXT$=".BAS") THEN A$="This is a binary file and requires XMODEM transfer":GOSUB 1405:DF=-1
  687. 20248  IF Q>2 THEN Z$=B$(3):Q=2:GOTO 20260
  688. 20252  A$="Download"+FU$:GOSUB 1500:IF Q=0 THEN 20252 ELSE Z$=B$(1)
  689. 20260  FT$=Z$:GOSUB 5000:ON INSTR("XAQ",Z$) GOTO 20290,20340,20289:GOTO 20252
  690. 20282  Z$=N$:GOSUB 5000:IF MID$(Z$,2,1)=":" THEN DR$=LEFT$(Z$,1):S=3 ELSE DR$="":S=1
  691. 20283  P=INSTR(Z$+".","."):PRE$=MID$(Z$,S,P-S):EXT$=MID$(Z$,P+1):IF LEN(EXT$)>3 THEN EXT$=LEFT$(EXT$,3)
  692. 20284  RETURN
  693. 20285  OK=0:K=0:L=LEN(A$)
  694. 20286  K=K+1:IF K>L THEN 20288 ELSE B$=MID$(Z$,K,1):IF B$="*" THEN 20289
  695. 20287  IF B$<>"?" AND MID$(A$,K,1)<>B$ THEN OK=-1:GOTO 20289 ELSE 20286
  696. 20288  IF L<LEN(Z$) AND MID$(Z$,L+1,1)<>"*" THEN OK=-1
  697. 20289  RETURN
  698. 20290  CLOSE 2:OPEN "R",2,F$,128:TLA=165:GOSUB 20750:IF NOT BE THEN GOSUB 1405:A$="Switching to N,8,1 for binary transfer.  You do the same.":GOSUB 1405:GOSUB 50510
  699. 20310  A$="Send ready. Press <Ctrl X> to abort transfer.":GOSUB 1400:GOSUB 50510:GOSUB 21300:A$="":GOTO 20390
  700. 20340  IF DF THEN 20235 ELSE CLOSE 2:OPEN "I",2,F$:TLA=139:GOSUB 20750:A$="* <Ctrl K> to abort. <Ctrl S> to suspend *":MID$(A$,9,1)="X":GOSUB 1400:A$="Ready to send. Open download file. Press <C/R> to start":GOSUB 1500
  701. 20380  ABT$=CAN$:STI=-1:GOSUB 6030:ABT$=CHR$(11):IF RET THEN A$="<*>Download aborted<*>":SN=0:GOTO 20390
  702. 20381  A$=CHR$(26):GOSUB 1400:IF NOT LJ THEN FOR X=1 TO 5:PRINT#3,CHR$(7):GOSUB 50510:NEXT
  703. 20385  A$="<*>End of file<*>":SN=-1
  704. 20390  GOSUB 1400:GOSUB 50600:RETURN
  705. 20400  IF Q>1 THEN B$(1)=B$(2):GOTO 20430
  706. 20420  A$=F8$+"upload":GOSUB 1500:IF Q=0 THEN RETURN
  707. 20430  Z$=B$(1):VD$="Upload ":FOR X=1 TO LEN(FA$):GOSUB 20741:ON A GOTO 20440,20420
  708. 20440  OK=0:NAME F$ AS F$
  709. 20450  IF NOT OK THEN 20460
  710. 20455  NEXT
  711. 20460  IF NOT OK AND UG>=UPS THEN A$="File exists, overwrite it":GOSUB 1500:IF YES THEN OK=-1:KILL F$:GOTO 20475
  712. 20465  F$=RIGHT$(FA$,1)+":"+Z$:IF NOT OK THEN CLOSE 2:A$="File <"+Z$+"> exists! Use a unique name.":GOSUB 1400:GOTO 20420
  713. 20475  Z$=LEFT$(F$,2)+UB$:GOSUB 1400:GOSUB 52000:A$="Upload disk has"+AD$:GOSUB 1400:FH$="(U) "+F$:GOSUB 950:IF Q>2 THEN Z$=B$(3):GOTO 20500
  714. 20480  A$="Upload"+FU$:GOSUB 1500:IF Q=0 THEN 20480 ELSE Z$=B$(1)
  715. 20500  FT$=Z$:GOSUB 5000:ON INSTR("XAQ",Z$) GOTO 20530,20560,20735:GOTO 20480
  716. 20530  IF NOT BE THEN GOSUB 1405:A$="Switching to N,8,1 for binary transfer.  You do the same, then start XMODEM.":GOSUB 1400
  717. 20540  A$="Receive ready. Press <Ctrl X> to abort transfer.":GOSUB 1405:GOSUB 50500:OK=-1:GOSUB 20860:X#=0:IF OK THEN 20700 ELSE 20730
  718. 20560  A$="NOTE--transfer MUST Terminate with a <Ctrl-K>.":GOSUB 1400:A$="Ready to receive.":GOSUB 1405:OK=0:X=0:CLOSE 2:OPEN "O",2,F$:IF PRT THEN PRINT"<Esc> from SYSOP will abort.
  719. 20600  WHILE NOT EOF(3):GOSUB 42000:IF LOF(3)<128 THEN PRINT#3,XA$;:X=-1
  720. 20610  X$=INPUT$(LOC(3),3):IF INSTR(X$,ABT$)THEN 20650
  721. 20620  OK=-1:PRINT#2,X$;
  722. 20621  IF NOT OK THEN 20670
  723. 20630  WEND:GOSUB 42000:IF X THEN X=0:PRINT#3,XON$;
  724. 20640  IF INKEY$=ESC$THEN 20745 ELSE 20600
  725. 20650  X=INSTR(X$,ABT$):IF X<>1 THEN PRINT#2,LEFT$(X$,X-1) ELSE IF NOT OK THEN 20730
  726. 20660  A$="Upload complete.":GOSUB 1405:X#=128:GOTO 20700
  727. 20670  A$=XA$+"System error! Upload aborted. Press <Ctrl-K> to continue
  728. 20675  GOSUB 1405:GOSUB 50510:PRINT#3,XON$;
  729. 20680  WHILE NOT EOF(3):X$=INPUT$(LOC(3),3):IF INSTR(X$,CHR$(11))THEN 20730
  730. 20685  GOSUB 42000:WEND:GOTO 20680
  731. 20700  X#=(CDBL(LOC(2))*128)+X#:CLOSE 2:BX=&H4:EN$=RIGHT$(FA$,1)+UB$:GOSUB 29000:OPEN "A",2,RIGHT$(FA$,1)+":"+UB$:F$=MID$(F$,3):BX=&H4:EN$=RIGHT$(FA$,1)+UB$:GOSUB 29500
  732. 20710  A$="Enter 40 char. description of "+F$+"(begin with / if for SYSOP only).":GOSUB 1405:A$=" |----+---1+0---+---2+0---+---3+0---+---4+0":GOSUB 1405:GOSUB 1500:IF LEN(B$(1))>40 THEN 20710
  733. 20720  IF LEFT$(B$(1),1)="/"THEN 20725 ELSE PRINT#2,USING"\           \########  &  &";F$;X#;LEFT$(DATE$,6)+RIGHT$(DATE$,2);B$(1)
  734. 20725  CLOSE 2:Y$=" >> uploaded << ":ULD=ULD+1:GOSUB 50610:RETURN
  735. 20730  A$="Upload aborted.":GOSUB 1405
  736. 20735  CLOSE 2:KILL F$:RETURN
  737. 20741  A=1:GOSUB 5000:F$=MID$(FA$,X,1)+":"+Z$:IF INSTR(F$,"?") OR INSTR(F$,"*") OR INSTR(F$," ") OR INSTR(F$,".DEF") OR INSTR(F$,".OLD") OR INSTR(3,F$,":") OR MID$(F$,LEN(F$),1)="." THEN A=2:RETURN
  738. 20742  IF LEN(Z$)=>3 THEN IF INSTR("COM1:COM2:LPT1:LPT2:LPT3:PRN:CON:AUX",Z$) THEN NI=VB:VD$=VD$+Z$:GOSUB 1380
  739. 20743  RETURN
  740. 20745  A$=XA$+"SYSOP aborted upload.  Stop transmission.  Press <Ctrl-K> to continue":GOTO 20675
  741. 20750  CNT#=FIX(LOF(2)/128):X#=LOF(2)/128:IF CNT#<>X#THEN X#=X#+1
  742. 20780  A$="File size is"+STR$(INT(X#))+" blocks.":FH$=FH$+RIGHT$(A$,(LEN(A$)-12)):GOSUB 1405:IF BPS=-2 THEN X#=X#*TLA/45 ELSE IF BPS=-3 THEN X#=X#*TLA/120 ELSE X#=X#*TLA/30
  743. 20785  IF LOF(2)<1 THEN 20015
  744. 20790  GOSUB 950:A$="Transfer time:"+STR$(INT(X#/60))+" min.,"+STR$(X#MOD 60)+" sec.":GOSUB 1405:GOSUB 41000:IF(INT(X#/60)+1)>INT(TR!)THEN A$="Insufficient time left!":GOSUB 1405:GOSUB 20015 ELSE RETURN
  745. 20810  GOSUB 42000:Y$="":DE!=FNTI!+2
  746. 20840  IF NOT EOF(3)THEN Y$=INPUT$(LOC(3),3):RETURN
  747. 20850  IF FNTI!<DE! THEN 20840 ELSE Y$="":RETURN
  748. 20860  IF PRT THEN PRINT:PRINT "<Esc> by SYSOP causes early termination. <<<"
  749. 20875  GOSUB 50510:IF NOT BE THEN OUT LCR,3:GOSUB 21280
  750. 20900  X$="":SEC=1:SO=0:CLOSE 2:OPEN "R",2,F$,128:FIELD 2,128 AS Z$:PRINT #3,NAK$;
  751. 20920  FOR X=1 TO 10:Y$=INKEY$:IF Y$=ESC$THEN 21270 ELSE GOSUB 20810
  752. 20930  IF LEFT$(Y$,1)=SOH$THEN 21020
  753. 20940  IF LEFT$(Y$,1)=EOT$THEN 21220
  754. 20950  IF LEFT$(Y$,1)=CAN$THEN 21230
  755. 20960  IF Y$<>"" THEN GOSUB 21280:GOTO 20920
  756. 20970  NEXT:PRINT#3,NAK$;:IF PRT THEN PRINT"Timeout
  757. 20990  GOTO 20920
  758. 21000  GOSUB 20810:IF Y$="" THEN PRINT"Timeout":GOTO 21040
  759. 21020  X$=X$+Y$:IF LEN(X$)<132 THEN 21000
  760. 21040  IF LEN(X$)=132 THEN 21090
  761. 21050  IF LEN(X$)>132 THEN 21180
  762. 21060  IF X$=EOT$THEN 21220
  763. 21070  IF X$=CAN$THEN 21230
  764. 21080  GOTO 21170
  765. 21090  IF SEC<>ASC(MID$(X$,2,1))THEN 21200
  766. 21100  IF(SEC XOR 255)<>ASC(MID$(X$,3,1))THEN 21210
  767. 21110  CK=0:FOR I=1 TO 128:CK=CK+ASC(MID$(X$,I+3,1)):NEXT:CK=(CK AND 255):IF CK<>ASC(MID$(X$,132,1))THEN 21190
  768. 21120  SO=SO+1:IF PRT THEN PRINT"Received Block #"SO;
  769. 21130  PRINT#3,ACK$;
  770. 21131  LSET Z$=MID$(X$,4):PUT 2:IF NOT OK THEN 21230
  771. 21145  SEC=255 AND(SEC+1):IF PRT THEN PRINT"- verified
  772. 21150  X$="":CK=0:GOTO 20920
  773. 21155  IF PRT THEN PRINT XEM$;
  774. 21160  SO=SO+1:IF PRT THEN PRINT SO
  775. 21165  PRINT#3,NAK$;:SO=SO-1:GOTO 21150
  776. 21170  XEM$="Short Block in #":GOTO 21155
  777. 21180  XEM$="Long Block in #":GOTO 21155
  778. 21190  XEM$="Checksum"+E1$:GOTO 21155
  779. 21200  XEM$="Block #"+E1$:GOTO 21155
  780. 21210  XEM$="Complement"+E1$:GOTO 21155
  781. 21220  IF PRT THEN PRINT"File Closed.
  782. 21225  PRINT#3,ACK$;:GOTO 21250
  783. 21230  IF PRT THEN PRINT"Transfer Aborted.
  784. 21240  OK=0:PRINT#3,CAN$;CAN$;
  785. 21250  IF NOT BE THEN GOSUB 21280:A$="Press C/R after switching to E,7,1":GOSUB 1405:GOSUB 50510:OUT LCR,26:GOSUB 1500
  786. 21265  RETURN
  787. 21270  IF PRT THEN PRINT TT$
  788. 21275  GOSUB 21280:GOTO 21240
  789. 21280  WHILE NOT EOF(3):GOSUB 42010:DF$=INPUT$(LOC(3),3):WEND:RETURN
  790. 21300  IF PRT THEN PRINT:PRINT "<Esc> by SYSOP causes early termination. <<<"
  791. 21320  IF NOT BE THEN GOSUB 50510:OUT LCR,3
  792. 21330  SEC=0:GOSUB 21280:FIELD 2,128 AS X$:SO=0
  793. 21350  WHILE NOT EOF(3)
  794. 21360  Y$=INPUT$(1,3):IF Y$=CAN$THEN 21560
  795. 21380  IF Y$=NAK$THEN 21480
  796. 21390  WEND:GOSUB 21460:GOTO 21350
  797. 21410  WHILE NOT EOF(3)
  798. 21420  Y$=INPUT$(1,3):IF Y$=ACK$THEN 21470
  799. 21440  IF Y$<>NAK$ THEN 21450
  800. 21443  IF PRT THEN PRINT "- transmission error":PRINT"***Re-";
  801. 21445  SO=SO-1:GOTO 21490
  802. 21450  IF Y$=CAN$ THEN 21560 ELSE WEND:GOSUB 21460: GOTO 21410
  803. 21460  GOSUB 42000:GOSUB 42010:Y$=INKEY$:FK$=Y$:GOSUB 60000:IF Y$=ESC$ THEN RETURN 21540 ELSE RETURN
  804. 21470  IF PRT THEN PRINT "- verified
  805. 21480  IF LOC(2)<LOF(2)/128 THEN GET 2:SEC=255 AND(SEC+1):GOTO 21490
  806. 21482  IF PRT THEN PRINT"End of file
  807. 21485  GOTO 21530
  808. 21490  SO=SO+1:IF PRT THEN PRINT"Sending Block #"SO;
  809. 21502  PRINT#3,SOH$;CHR$(SEC);CHR$(SEC XOR 255);X$;
  810. 21503  CK=0:FOR I=1 TO 128:CK=CK+ASC(MID$(X$,I,1)):NEXT:CK=(CK AND 255)
  811. 21504  IF CK>256 THEN CK=CK-256:GOTO 21504
  812. 21510  PRINT#3,CHR$(CK);:GOSUB 21280:GOTO 21410
  813. 21530  PRINT#3,EOT$;:FOR X=1 TO 100:GOSUB 20810:IF Y$=ACK$THEN 21550 ELSE Y$=INKEY$:IF Y$=ESC$ THEN 21540
  814. 21535  NEXT:GOTO 21230
  815. 21540  IF PRT THEN PRINT TT$
  816. 21545  Y$=CAN$:PRINT#3,CAN$;CAN$;:GOTO 21250
  817. 21550  IF PRT THEN PRINT"Transmission Ended.
  818. 21555  SN=-1:GOTO 21250
  819. 21560  SN=0:IF PRT THEN PRINT"Receiver aborted transmission":GOTO 21250 ELSE RETURN
  820. 21990  GOSUB 22000:GOSUB 30500:RETURN
  821. 22000  NQ=-1:MID$(LS$,1,2)="LM":GOSUB 950:DF$=MES$:ON SHRD GOTO 22100,22200,22300:RETURN
  822. 22100  AX=&H0:BX=&H1:GOTO 60510
  823. 22200  CC$=CHR$(10)+CHR$(0)+CHR$(11)+CHR$(1)+MID$(MES$+SPACE$(8),3,8):GOSUB 28000:IF CRTN=0 THEN RETURN ELSE GOSUB 50500:GOTO 22200
  824. 22300  GOSUB 28100:CALL LPLKIT(DF,DF$,A):RETURN
  825. 23000  GET 1,1:LE=VAL(LEFT$(R$,8)):CJ=VAL(MID$(R$,11,10)):NUR=VAL(MID$(R$,57,5)):HUR=VAL(MID$(R$,62,5)):FMR=VAL(MID$(R$,68,7)):NMR=VAL(MID$(R$,75,7)):HMR=VAL(MID$(R$,82,7)):MNODES=VAL(MID$(R$,127)):RETURN
  826. 24000  MID$(R$,1,8)=STR$(LE):MID$(R$,11,10)=STR$(CJ):MID$(R$,57,5)=STR$(NUR):MID$(R$,62,5)=STR$(HUR):MID$(R$,68,7)=STR$(FMR):MID$(R$,75,7)=STR$(NMR):MID$(R$,82,7)=STR$(HMR):MID$(R$,127,2)=STR$(MNODES):PUT 1,1:RETURN
  827. 25000  NQ=0:MID$(LS$,1,2)="UM":GOSUB 950:DF$=MES$:ON SHRD GOTO 25100,25200,25300:RETURN
  828. 25100  AX=&H100:BX=&H1:GOTO 60510
  829. 25200  CC$=CHR$(10)+CHR$(0)+CHR$(11)+CHR$(17)+MID$(MES$+SPACE$(8),3,8):GOSUB 28000:IF CRTN=128 THEN RETURN ELSE GOSUB 50500:GOTO 25200
  830. 25300  GOSUB 28100:CALL UNLOKIT(DF,DF$,A):RETURN
  831. 26000  UQ=-1:MID$(LS$,4,2)="LU":GOSUB 950:DF$=UF$:ON SHRD GOTO 26100,26200,22300:RETURN
  832. 26100  AX=&H0:BX=&H2:GOTO 60510
  833. 26200  CC$=CHR$(10)+CHR$(0)+CHR$(11)+CHR$(1)+MID$(UF$+SPACE$(8),3,8):GOSUB 28000:IF CRTN=0 THEN RETURN ELSE GOSUB 50500:GOTO 26200
  834. 26500  UQB=-1:BLK=(UIX#/4)+0.25:MID$(LS$,7,2)="LB":GOSUB 950:DF$=UF$:ON SHRD GOTO 26600,26700,22300:RETURN
  835. 26600  AX=&H0:BX=BLK+10:GOTO 60510
  836. 26700  CC$=CHR$(10)+CHR$(0)+CHR$(11)+CHR$(1)+"BLK"+RIGHT$("0000"+RIGHT$(STR$(BLK),LEN(STR$(BLK))-1),5):GOSUB 28000:IF CRTN=0 THEN RETURN ELSE GOSUB 50500:GOTO 26700
  837. 27000  UQ=0:MID$(LS$,4,2)="UU":GOSUB 950:DF$=UF$:ON SHRD GOTO 27100,27200,25300:RETURN
  838. 27100  AX=&H100:BX=&H2:GOTO 60510
  839. 27200  CC$=CHR$(10)+CHR$(0)+CHR$(11)+CHR$(17)+MID$(UF$+SPACE$(8),3,8):GOSUB 28000:IF CRTN=128 THEN RETURN ELSE GOSUB 50500:GOTO 27200
  840. 27500  UQB=0:BLK=(UIX#/4)+0.25:MID$(LS$,7,2)="UB":GOSUB 950:DF$=UF$:ON SHRD GOTO 27600,27700,25300:RETURN
  841. 27600  AX=&H100:BX=BLK+10:GOTO 60510
  842. 27700  CC$=CHR$(10)+CHR$(0)+CHR$(11)+CHR$(17)+"BLK"+RIGHT$("0000"+RIGHT$(STR$(BLK),LEN(STR$(BLK))-1),5):GOSUB 28000:IF CRTN=128 THEN RETURN ELSE GOSUB 50500:GOTO 27700
  843. 28000  CALL CDSEND(CC$):CALL CDRECV(CRET$):CRTN=ASC(MID$(CRET$,3,1)):IF CRTN=>128 THEN PRINT "CORVUS LOCK FAIL":GOTO 31000
  844. 28010  CRTN=ASC(MID$(CRET$,4,1)):IF CRTN=>129 THEN PRINT "CORVUS FULL":GOTO 31000 ELSE RETURN
  845. 28100  DF=ASC(LEFT$(DF$,1))-ASC("A"):DF$=MID$(DF$,3,30)+STRING$(34-LEN(DF$),0):A=0:RETURN
  846. 29000  XQ=-1:MID$(LS$,10,2)="LD":GOSUB 950:DF$=EN$:ON SHRD GOTO 29100,42020,22300:RETURN
  847. 29100  AX=&H0:BX=&H3:GOTO 60510
  848. 29500  XQ=0:MID$(LS$,10,2)="UD":GOSUB 950:DF$=EN$:ON SHRD GOTO 29600,42020,25300:RETURN
  849. 29600  AX=&H100:BX=&H3:GOTO 60510
  850. 30000  CLOSE 1:OPEN "I",1,CA$:CLOSE 1:RETURN
  851. 30500  CLOSE 1:OPEN "R",1,MES$:FIELD 1,128 AS R$:RETURN
  852. 31000  IF MC THEN GOSUB 60400:SYSTEM ELSE SYSTEM
  853. 32000  CLS:IF MC THEN GOSUB 60400:END ELSE END
  854. 33000  LH=NOT LH:IF PRT THEN GOSUB 49000
  855. 33010  IF GRF THEN 40000 ELSE GOSUB 21990:GET 1,NODE:MID$(R$,38,2)=STR$(LH):GOTO 43080
  856. 33040  AC=NOT AC:IF PRT THEN GOSUB 49000
  857. 33050  IF GRF THEN 40000 ELSE GOSUB 21990:GET 1,NODE:MID$(R$,34,2)=STR$(AC):GOTO 43080
  858. 33060  RETURN 320
  859. 33070  AVA=NOT AVA:IF PRT THEN GOSUB 49000
  860. 33080  IF GRF THEN 40000 ELSE GOSUB 21990:GET 1,NODE:MID$(R$,32,2)=STR$(AVA):GOTO 43080
  861. 33090  SG=NOT SG:IF PRT THEN GOSUB 49000
  862. 33100  IF GRF THEN 40000 ELSE GOSUB 21990:GET 1,NODE:MID$(R$,36,2)=STR$(SG):GOTO 43080
  863. 33110  SH=NOT SH:C.C=CSRLIN:C.L=POS(0):LOCATE 25,1:PRINT SPACE$(79);:LOCATE 25,1:IF SH THEN UG=SE:PRINT "Temp. SYSOP Privileges GRANTED"; ELSE UG=HUG:PRINT "Temp. SYSOP Privileges REMOVED";
  864. 33120  GOSUB 50510:LOCATE C.C,C.L:GOSUB 49000:RETURN
  865. 33130  IF PRT THEN PRT=0:LOCATE,,0:CLS:RETURN
  866. 33140  LOCATE 23,1,0:PRINT"SNOOP ON.":GOSUB 953:PRT=-1:RETURN
  867. 33150  A$=CHR$(12)+"SYSOP is active. Now in CHAT mode.":GOSUB 1405:GOSUB 50500:A$="Hello, this is "+NA$+" "+NB$+". Sorry to break in but..":GOSUB 1400:GOSUB 4770:RETURN
  868. 40000  A$="Status cannot be changed while Conference active!":GOSUB 1400:RETURN
  869. 41000  GOSUB 41010:IF TR!<0 THEN TR!=0:RETURN 10553 ELSE RETURN
  870. 41010  TOA!=FRE("A"):IF FNTI!>TI!THEN TMA!=FNTI!-TI! ELSE TMA!=FNTI!+86400-TI!
  871. 41020  TR!=(TV!-TMA!)/60:TR$=STR$(INT(TR!)):RETURN
  872. 41050  GOSUB 41000:GOSUB 1405:A$="Time remaining = "+TR$+" min.":GOTO 2210
  873. 41070  GOSUB 1400:A$="Access level"+STR$(UG)+" granted.":GOTO 2210
  874. 41500  TI$=TIME$:D$=LEFT$(DATE$,6)+RIGHT$(DATE$,2)
  875. 41510  TIM$=TIME$:IF VAL(LEFT$(TIM$,2))=12 THEN MID$(TIM$,1,2)=RIGHT$(STR$(VAL(LEFT$(TIM$,2))),2):TIM$=LEFT$(TIM$,5)+" PM":RETURN
  876. 41520  IF VAL(LEFT$(TIM$,2))>11 THEN MID$(TIM$,1,2)=RIGHT$(STR$(VAL(LEFT$(TIM$,2))-12),2):TIM$=LEFT$(TIM$,5)+" PM":RETURN ELSE TIM$=LEFT$(TIM$,5)+" AM":RETURN
  877. 42000  IF LJ THEN RETURN:IF CTI!>TI!THEN CTI!=TI!+(10*60)
  878. 42010  IF INP(MSR)<128 AND NOT LJ THEN 10595
  879. 42020  RETURN
  880. 43000  IF NOT BE THEN A$="Graphics unavailable in 7 bit mode":GOTO 43020
  881. 43010  GR=NOT GR:A$="Graphics mode ":IF GR THEN A$=A$+"on" ELSE A$=A$+"off
  882. 43020  GOTO 2210
  883. 43025  GOSUB 43030:GOSUB 45000:RETURN
  884. 43030  OK=0:IF (BE AND GR AND LEN(F$)<10) THEN DF$=F$+"G":NAME DF$ AS DF$
  885. 43031  IF OK THEN F$=DF$
  886. 43035  RETURN
  887. 43040  IF INSTR(3,Z$,MID$(A$,3,(LEN(A$)-2))) THEN RETURN 20245 ELSE RETURN
  888. 43050  FIELD 2,55 AS CL$,3 AS LG$(10),3 AS MMM$, 3 AS LG$(16):LSET CL$=MID$(NG$,65,55):LSET LG$(10)=STR$(HHH):LSET MMM$=STR$(MMM):LSET LG$(16)=STR$(SSS):CDX=CDX+1:PUT 2,CDX:FIELD 2,64 AS CL$:LSET CL$=LEFT$(NG$,64):CDX=CDX+1:PUT 2,CDX
  889. 43060  LSET CL$=STRING$(64,CHR$(0)):PUT 2:PUT 2:IF FE$=NA$ AND LK$=NB$ THEN SH=-1 ELSE SH=0
  890. 43070  GOSUB 21990:GET 1,NODE:MID$(R$,40,2)=STR$(WI):MID$(R$,42,2)=STR$(BE):MID$(R$,44,2)=STR$(BPS):MID$(R$,46,2)=STR$(UC):MID$(R$,48,5)=SPACE$(5):KG=-1:GOSUB 41010:MID$(R$,48,5)=STR$(TR!):MID$(R$,53,2)=STR$(GR):MID$(R$,55,2)=STR$(SH)
  891. 43080  PUT 1,NODE:GOSUB 30000:GOSUB 25000:GOSUB 30500:RETURN
  892. 44000  GOSUB 21990:GET 1,NODE:WI=VAL(MID$(R$,40,2)):BE=VAL(MID$(R$,42,2)):BPS=VAL(MID$(R$,44,2)):UC=VAL(MID$(R$,46,2)):TV!=VAL(MID$(R$,48,5)):GR=VAL(MID$(R$,53,2)):SH=VAL(MID$(R$,55,2)):IF BPS=-3 THEN Q=&H60:GOSUB 1654
  893. 44010  TI!=FNTI!:IF TV!<60 THEN TV!=120
  894. 44015  IF NOT BE THEN OUT LCR,&H1A
  895. 44020  IF SH THEN FE$=PB$:LK$=PC$:RETURN
  896. 44030  FE=INSTR(R$," "):JJ=INSTR(FE+1,R$," "):FE$=LEFT$(R$,FE-1):LK$=MID$(R$,FE+1,JJ-(FE+1)):GOSUB 12550:RETURN
  897. 45000  STI=0:GOSUB 6000:STI=-1:RETURN
  898. 45010  SI=-1:GOSUB 1500:SI=0:GOTO 2210
  899. 49000  IF AVA THEN FH$="AVL " ELSE FH$=SPACE$(4)
  900. 49010  IF AC THEN FH$=FH$+"ANY " ELSE FH$=FH$+SPACE$(4)
  901. 49020  IF LH THEN FH$=FH$+"LPT " ELSE FH$=FH$+SPACE$(3)
  902. 49030  IF SG THEN FH$=FH$+"SYS
  903. 49040  GOSUB 950:RETURN
  904. 50000  A$="Fatal error. System going down":GOSUB 1405:GOTO 10595
  905. 50400  A$=" ":GOSUB 1405:A$="<A>bort, <C>ontinue, <D>elete, <E>dit, <I>nsert, <L>ist, <M>argin, <S>ave":GOTO 2210
  906. 50500  DE!=FNTI!+1:GOTO 50520
  907. 50510  DE!=FNTI!+3
  908. 50520  IF FNTI!<DE! THEN 50520 ELSE RETURN
  909. 50600  IF SN=-1 THEN DLD=DLD+1:Y$=" Downloaded " ELSE Y$=" Aborted "
  910. 50610  IF NOT LJ THEN GOSUB 41510:Z$=SPACE$(5)+F$+Y$+"at "+TIM$+" using "+FT$:GOSUB 5538
  911. 50620  RETURN
  912. 52000  CLS:FILES Z$:AD$="":FOR X=1 TO 25:AD$=AD$+CHR$(SCREEN(3,X)):NEXT:GOSUB 49000:IF INSTR(AD$,"Bytes free")THEN RETURN
  913. 52030  AD$=" 2010 - No data available":IF CE AND DA>1 THEN 52040 ELSE RETURN
  914. 52040  DR=INSTR("ABCDEFGHIJKLM",LEFT$(Z$,1)):IF DR=0 THEN RETURN
  915. 52060  CALL UTSPACE(DR,AE,DF,BH,SP):TOA!=AE:TOA!=TOA!*BH:TOA!=TOA!*SP:AD$=STR$(TOA!)+" Bytes free":RETURN
  916. 52070  WHILE (INP(MSR)AND &H40):WEND:PRINT#3,A$:RETURN
  917. 53000  IF Q>1 THEN 53030
  918. 53010  A$="Enter DIR to be scanned or ALL":GOSUB 1500:IF Q=0 THEN RETURN ELSE B$(2)=B$(1):Q=2
  919. 53030  ED=LEN(FA$)-1:LD=-1:LN=-1:Z$=B$(2):GOSUB 5000:IF Z$="ALL" THEN 53070
  920. 53060  GOSUB 20160:LN=0:RETURN
  921. 53070  G=2:J=2:FOR SM=1 TO ED:B$(2)=MID$(FA$,SM,1)+":"+DIR$+"???.":GOSUB 10720:CLS:NEXT:GOSUB 49000:QX=G:X=3:T8$=DIR$:DIR$="":GOSUB 20161:DIR$=T8$:LN=0:RETURN
  922. 56000  CLOSE 2:OPEN "R",2,CF$,64:FIELD 2,64 AS CL$:RETURN
  923. 57000  A$="":GOSUB 1405:GOSUB 56000:UDX=CDX
  924. 57005  IF UDX <1 OR RET THEN RETURN
  925. 57010  GET 2,UDX:A$=CL$:IF LEFT$(A$,3)=SPACE$(3) THEN 57030
  926. 57015  IF INSTR(A$,"on at")=0 THEN 57030
  927. 57025  UDX=UDX-1:GET 2,UDX:A1$=LEFT$(CL$,15):IF SH OR LEFT$(A1$,3)<>SPACE$(3) THEN A$=A$+A1$
  928. 57027  GOTO 57035
  929. 57030  IF NOT SH THEN 57045
  930. 57035  GOSUB 1405:IF PL AND Q>=0 THEN Q=Q+1:IF Q>=PL THEN GOSUB 5600:IF NO THEN RETURN ELSE Q=0
  931. 57045  UDX=UDX-1:GOTO 57005
  932. 59000  PARM$=" -  ":CALL UTGETPRM(PARM$):IF VAL(PARM$)=0 THEN NODE = 2:MID$(CA$,5,1)="-":NODE$="1":RETURN
  933. 59010  NODE=VAL(PARM$)+1:NODE$=MID$(PARM$,2,1):MID$(CA$,5,1)=NODE$:RETURN
  934. 60000  IF LEN(FK$) <> 2 THEN RETURN
  935. 60010  IX=ASC(RIGHT$(FK$,1)):IF IX<59 OR IX>68 THEN RETURN ELSE IX=IX-58:ON IX GOSUB 31000,32000,33000,33040,33060,33070,33090,33110,33130,33150:RETURN
  936. 60400  BX=-4:AX=&H100:IF CP$="COM2" THEN BX=-3
  937. 60410  GOTO 60510
  938. 60430  AX=&HB01:BX=0:GOTO 60510
  939. 60510  DEF SEG=MC:IF CE THEN 60550
  940. 60520  PRINT"Make line # 60540 CALL CO(AX,BX):RETURN"
  941. 60550  CALL ABSOLUTE(AX,BX,CO):RETURN
  942. 62500  GOSUB 41000:KB=0:RE=0:IF NH THEN 4625
  943. 62501  IF UH THEN A$=LG$(0)+",K" ELSE A$=LG$(0)
  944. 62502  GOSUB 1500:IF NO THEN 4650
  945. 62505  IF KB AND (UH OR SH) THEN IF UG>=MD(10) THEN GOSUB 62520:GOSUB 3950:GOSUB 62530:GOTO 4625 ELSE VD$="MainMenu R) Func 8":GOSUB 1380:GOTO 4625
  946. 62510  IF NOT RE THEN 4625
  947. 62515  IF UG<MD(4) THEN VD$="MainMenu R) Func 4":GOSUB 1380:RE=0:GOTO 4625 ELSE IF LEFT$(SUB$,3)<>"(R)" THEN SUB$="(R)"+LEFT$(SUB$,22)
  948. 62516  T$=FI$:FI$=NAM$:GOSUB 62520:GOSUB 2000:RE=0:GOSUB 62530:GOTO 4560
  949. 62520  SQ=Q:T8$=B$:SLI=LI:SL=S:SNS=NH:SR=R:RETURN
  950. 62530  Q=SQ:B$=T8$:LI=SLI:S=SL:NH=SNS:R=SR:KB=0:RETURN
  951. 64000  LG$(1)="Registration Check Failed":LG$(3)="Locked out attempt":LG$(4)="Password Attempt Failed":P$="Password":VB$="RBBS-PC VERSION ":K1$="<K>ill unneeded ones.":LG$(5)="Automatic Lockout completed":LG$(6)="Name in use on another Node!":LF=-1
  952. 64010  TT$="Transfer aborted by <Esc>":TU$="^READ^":E1$=" Error in #":F8$="Enter full filename to ":FU$=" type <X>modem, <A>scii, <Q>uit":LG$(0)="More (Y),N,NS,RE":LG$(2)="Sysop name attempted":RETURN
  953.